日付を日付時刻に変換しようとしていますが、エラーが発生しています。変換元のデータ型は(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),
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))
これを試して:
select CONVERT(datetime, convert(varchar(10), 20120103))