0

这里有构成日期的 3 个字段的值,但我得到空值。所以我的语法有问题。我也只想要日期(没有时间)`

   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,

那在我的选择语句中,它给了我 NULL 的数据。这 3 个字段的值是:

DATE_MM: 3
DATE_DD: 4
DATE_YY: 1959

这 3 个字段后面的数据类型是 int

4

2 回答 2

0

您将 3 个 varchar 值合并在一起,它将返回一个 varchar,因此您的 isdate 将返回 false 并且您的案例将从 else 子句返回 null 值。

于 2012-11-08T16:32:36.490 回答
0

你可以用它来dateadd代替。

select dateadd(day, DATE_DD - 1, 
               dateadd(month, DATE_MM - 1, 
                       dateadd(year,  DATE_YY - 1900, 0))) as BirthDate
from someTable
于 2012-11-08T16:51:08.907 回答