Problemet är att du försöker convert
det numeriska till en datetime
, och det här fungerar bara inte.
Du måste ändra din numeric
i en sträng först:
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 med demo.
När du försöker konvertera en numerisk typ till en datetime
, SQL Server försöker lägga till det numeriska värdet som antalet dagar till datumet 01-Jan-1900
. I ditt fall försöker detta lägga till miljontals dagar, och därav överflödesfelet.
CONVERT
fungerar också bra, om du föredrar:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle med demo.