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.