2010-10-04 185 views
24

我試圖將日期轉換爲datetime,但出現錯誤。我轉換的數據類型是(float,null),我想將它轉換爲DATETIME。將INT轉換爲DATETIME(SQL)

這段代碼的第一線工作正常,但我得到的第二行此錯誤:

Arithmetic overflow error converting expression to data type datetime. 


CAST(CAST(rnwl_efctv_dt AS INT) AS char(8)), 
CAST(CAST(rnwl_efctv_dt AS INT) AS DATETIME), 
+0

什麼語言?你能告訴我們rnwl_efctv_dt的價值嗎? – 2010-10-04 14:00:07

回答

32

你需要先轉換爲char,因爲轉換爲INT增加了那些日子1900-01-01

select CONVERT (datetime,convert(char(8),rnwl_efctv_dt)) 

這裏有一些例子

select CONVERT (datetime,5) 

1900年1月6日00:00:00.000

select CONVERT (datetime,20100101) 

吹出來,因爲你不能添加20100101天到1900-01-01..you上面去了極限

轉換您使用的爲char第一

declare @i int 
select @i = 20100101 
select CONVERT (datetime,convert(char(8),@i)) 
+0

我正在爲數十萬行進行此操作。有什麼我需要注意的嗎? – Daniel 2010-10-04 14:10:04

+0

或者我可以堅持在我的演員陣容之上(其中一個演變成你的第一個轉換聲明)? – Daniel 2010-10-04 14:10:38