将INT转换为DATETIME(SQL)

时间:2010-10-04 13:52:17

标签: sql datetime casting integer

我正在尝试将日期转换为日期时间但是我遇到了错误。我转换的数据类型是(float,null),我想将其转换为DATETIME。

此代码的第一行工作正常,但我在第二行收到此错误:

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),

3 个答案:

答案 0 :(得分:40)

您需要先转换为char,因为转换为int会将这些天数添加到1900-01-01

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

这里有一些例子

select CONVERT (datetime,5)

1900-01-06 00:00:00.000

select CONVERT (datetime,20100101)

爆炸,因为你无法在1900-01-01之间添加20100101天......你超过了限制

首先转换为char

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

答案 1 :(得分:0)

尝试一下:

select CONVERT(datetime, convert(varchar(10), 20120103))

答案 2 :(得分:0)

在该字段上使用 where 子句来忽略空值和零值

update
    table
set
    BDOS= CONVERT(datetime, convert(char(8), field))
where 
    isnull(field,0)<>0