Problem polega na tym, że próbujesz convert
liczba do datetime
, a to po prostu nie działa.
Musisz zmienić swój numeric
najpierw do ciągu:
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 z demo.
Kiedy próbujesz przekonwertować typ liczbowy na datetime
, SQL Server próbuje dodać wartość liczbową jako liczbę dni do daty 01-Jan-1900
. W twoim przypadku jest to próba dodania milionów dni i stąd błąd przepełnienia.
CONVERT
działa również dobrze, jeśli wolisz:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle z demo.