Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro de estouro aritmético ao converter a expressão para o tipo de dados datetime. (enquanto exibe a data e hora..)


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.