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.