sql >> Base de Datos >  >> RDS >> Sqlserver

Error de desbordamiento aritmético al convertir la expresión al tipo de datos fecha y hora. (mientras se muestra la fecha y la hora...)

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.