Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur de dépassement arithmétique lors de la conversion de l'expression en type de données datetime. (lors de l'affichage de la date et de l'heure..)

Votre problème est que vous essayez de convert le numérique à un datetime , et cela ne fonctionne tout simplement pas.

Vous devez transformer votre numeric dans une chaîne d'abord :

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 avec démo.

Lorsque vous essayez de convertir un type numérique en un datetime , SQL Server essaie d'ajouter la valeur numérique comme nombre de jours à la date 01-Jan-1900 . Dans votre cas, cela essaie d'ajouter des millions de jours, et donc l'erreur de débordement.

CONVERT fonctionne bien aussi, si vous préférez :

select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));

SQL Fiddle avec démo.