Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Errore di overflow aritmetico durante la conversione dell'espressione nel tipo di dati datetime. (durante la visualizzazione della data e dell'ora..)

Il problema è che stai cercando di convert il numero in un datetime , e questo non funziona.

Devi trasformare il tuo numeric prima in una stringa:

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 demo.

Quando provi a convertire un tipo numerico in un datetime , SQL Server tenta di aggiungere il valore numerico come numero di giorni alla data 01-Jan-1900 . Nel tuo caso questo sta cercando di aggiungere milioni di giorni, e quindi l'errore di overflow.

CONVERT funziona anche bene, se preferisci:

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

SQL Fiddle con demo.