0

ここに日付を構成する 3 つのフィールドの値がありますが、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 です

4

2 に答える 2

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 に答える
0

3 つの varchar 値をマージすると、varchar が返されるため、isdate は false を返し、case は else 句から null 値を返します。

于 2012-11-08T16:32:36.490 に答える