2010-10-04 156 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