没有从转换返回的日期

时间:2012-11-08 16:28:27

标签: tsql

这里有三个字段构成日期的值,但是我得到了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

2 个答案:

答案 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