Masalah Anda adalah Anda mencoba untuk convert
numerik menjadi datetime
, dan ini tidak berhasil.
Anda perlu mengubah numeric
menjadi string terlebih dahulu:
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 Fiddle dengan demo.
Saat Anda mencoba dan mengonversi tipe numerik menjadi datetime
, SQL Server mencoba menambahkan nilai numerik sebagai jumlah hari hingga tanggal 01-Jan-1900
. Dalam kasus Anda, ini mencoba menambahkan jutaan hari, dan karenanya kesalahan luapan.
CONVERT
juga berfungsi dengan baik, jika Anda mau:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle dengan demo.