Seu problema é que você está tentando
convert
o numérico para um datetime
, e isso simplesmente não está funcionando. Você precisa transformar seu
numeric
em uma string primeiro: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 com demonstração.
Quando você tenta converter um tipo numérico em um
datetime
, o SQL Server tenta adicionar o valor numérico como o número de dias à data 01-Jan-1900
. No seu caso, isso está tentando adicionar milhões de dias e, portanto, o erro de estouro. CONVERT
funciona bem também, se você preferir:select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle com demonstração.