Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MauricioSB

Erro em operações com data

Recommended Posts

bom dia

 

Usso o sql server 2005.

 

Estou fazendo uma consulta que deve me retornar o numero de dias entre duas datas.

getdate() - dt_vcto

 

Porem no campo dt_vcto a data é 2202-12-20 00:00:00.000

e da o erro:

Msg 8115, Level 16, State 2, Line 1

Arithmetic overflow error converting expression to data type datetime.

 

Vou postar a minha consulta:

select

DT_VCTO

,cast((getdate() - dt_vcto) as numeric(38,0)) as DIAS_ATR

 

from

tbl_lctos

where

nr_chave_lcto = '1000003740'

Compartilhar este post


Link para o post
Compartilhar em outros sites

MauricioSB,

se nao me engano ha um limite para o ano no SQL2005, mas nao encontrei ainda onde esta... eu jah tinha lido sobre isso....

 

Se você alterar a data de vencimento nao gera erro:

SET DATEFORMAT YMD

DECLARE @DT_VCTO DATETIME
SET @DT_VCTO = '2155-12-20 00:00:00.000'

SELECT @DT_VCTO
select 
@DT_VCTO 
,cast((getdate() - @DT_VCTO ) as BIGINT) as DIAS_ATR

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela resposta..

realmente se usar 2156-11-22 não da o erro..

 

Porem eu mudei a data do servidor para amanha (24/11/2009) e consequi usar '2156-11-23'...

 

Acredito que não tenha problema com limite de ano pois esta ano(2202) esta gravado no campo dt_vcto no sql server 2005.

 

Fiz varias pesquisas e não descobri nada ainda..

 

MAuricio

 

 

MauricioSB,

se nao me engano ha um limite para o ano no SQL2005, mas nao encontrei ainda onde esta... eu jah tinha lido sobre isso....

 

Se você alterar a data de vencimento nao gera erro:

SET DATEFORMAT YMD

DECLARE @DT_VCTO DATETIME
SET @DT_VCTO = '2155-12-20 00:00:00.000'

SELECT @DT_VCTO
select 
@DT_VCTO 
,cast((getdate() - @DT_VCTO ) as BIGINT) as DIAS_ATR

Abçs

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mauricio, a data eh gravado, o problema esta na manipulacao destes dados....

eu vou dar uma peskisada, pois eu li em algum lugar no msdn sobre o limite de datas no SQL 2005. Se eu conseguir eu posto o link.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá..!! http://forum.imasters.com.br/public/style_emoticons/default/coolio.gif

 

As duas opções abaixo funcionam. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

SELECT CAST(GETDATE() - CONVERT(DATETIME,'2008-11-20') AS INT)

 

SELECT CAST(GETDATE() - '2008-11-20' AS INT)

 

O Problema deve ser mesmo com o limite de datas suportado pelo SQL Server. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

um abraço,

 

Renato http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.