这里有三个字段构成日期的值,但是我得到了null。我的语法出了问题。我也想要日期(没时间)`
case when isdate(CAST(someTable.DATE_MM as varchar(8)) + CAST(someTable.DATE_DD as varchar(8)) + CAST (someTable.DATE_YY as varchar(8))) = 1
then convert(date,CAST(someTable.DATE_MM as varchar(8)) + '/' + CAST(someTable.DATE_DD as varchar(8)) + '/' + CAST (someTable.DATE_YY as varchar(8))) else null end as BirthDate,
这是在我的select语句中,它给了我数据的NULL。这3个字段的值为:
DATE_MM: 3
DATE_DD: 4
DATE_YY: 1959
这3个字段后面的数据类型是int
答案 0 :(得分:0)
将3个varchar值合并在一起,它将返回一个varchar,因此你的isdate将返回false,你的case将从else子句返回null值。
答案 1 :(得分:0)
您可以使用dateadd
代替。
select dateadd(day, DATE_DD - 1,
dateadd(month, DATE_MM - 1,
dateadd(year, DATE_YY - 1900, 0))) as BirthDate
from someTable