0

我有一个格式化为 MMMDD 的 nvarchar(5) 数据列(例如,OCT26)。使用我的 select 语句,我想将其转换为具有当前年份的日期时间数据类型,然后将该日期时间值保存为别名,例如 UsefulDate。所以就像 2012 年 10 月 26 日。

类似于:SELECT(无论 SQL 完成工作)AS UsefulDate

确切的格式无关紧要;我只需要能够将两个日期与大于和小于运算符进行比较。此外,有时该列将是空白的。在这种情况下,我也想将别名设置为空白。这可能吗?

谢谢你的帮助!

4

2 回答 2

1

您可以将格式为 MMMDD 的 varchar 字段转换为当前年份的日期:

select convert(datetime,'OCT26'+','+cast(year(getdate()) as varchar),107)

因此,您的查询将类似于:

select convert(datetime,case varcharDate when '' then null else varcharDate end +
               ','+cast(year(getdate()) as varchar),107) as UsefulDate 
from table
于 2012-10-26T10:16:52.020 回答
0
select CASE WHEN ISDATE(mmmdd+' '+right(year(getdate()),4)) = 1
            THEN CAST(mmmdd+' '+right(year(getdate()),4) as datetime)
            END UsefulDate, *
  from tbl
于 2012-10-26T10:14:40.637 回答