Tu problema es que estás tratando de convert
el numérico a un datetime
, y esto simplemente no funciona.
Debe convertir su numeric
en una cadena primero:
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 con demostración.
Cuando intenta convertir un tipo numérico a un datetime
, SQL Server intenta agregar el valor numérico como el número de días a la fecha 01-Jan-1900
. En su caso, esto está tratando de agregar millones de días y, por lo tanto, el error de desbordamiento.
CONVERT
también funciona bien, si lo prefiere:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle con demostración.