web-dev-qa-db-ja.com

INTからDATETIMEへの変換(SQL)

日付を日付時刻に変換しようとしていますが、エラーが発生しています。変換元のデータ型は(float、null)であり、DATETIMEに変換したいと思います。

このコードの最初の行は正常に機能しますが、2行目にこのエラーが表示されます。

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

intに変換するとそれらの日が1900-01-01に追加されるため、最初にcharに変換する必要があります

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日を追加できないため、爆発します。制限を超えます

最初に文字に変換

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

これを試して:

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