問題は、convert
しようとしていることです datetime
の数値 、これは機能していません。
numeric
を変える必要があります 最初に文字列に:
declare @yr_mnth_dt as numeric;
set @yr_mnth_dt = 20130822;
select yr_mnth_dt = cast(cast(@yr_mnth_dt as char(8)) as datetime);
SQLフィドルとデモ。
数値タイプをdatetime
に変換しようとしたとき 、SQL Serverは、日付01-Jan-1900
に日数として数値を追加しようとします 。あなたの場合、これは数百万日を追加しようとしているため、オーバーフローエラーが発生します。
CONVERT
必要に応じて、正常に動作します:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQLフィドルとデモ。