2012-11-08 70 views
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

+0

你可能想看看http://stackoverflow.com/questions/266924/create-a-date-with-t-sql – Tejs

+0

@Tejs,即工作,但你知道如何獲得只是演員的日期(剝離時間)? – user1808194

+0

轉換爲'SmallDateTime' – Tejs

回答

0

在合併3個VARCHAR值加在一起,它會返回一個VARCHAR,因此您ISDATE將返回false和你的情況將從else子句返回null值。

+0

那麼我該如何將它們結合在一起。我不想做int + int + int ...這是添加,而不是將這些部分附加在一起來創建一個日期,以便轉換工作。所以我通過varchar來完成它,所以我可以將它們一起追加...... – user1808194

0

您可以用dateadd代替。

select dateadd(day, DATE_DD - 1, 
       dateadd(month, DATE_MM - 1, 
         dateadd(year, DATE_YY - 1900, 0))) as BirthDate 
from someTable 
相關問題