ERRO Arithmetic overflow error converting expression to data type datetime.

27/11/2019

0

Boa tarde estou com seguinte erro quando tento usar operadores de diferença de datas,


Arithmetic overflow error converting expression to data type datetime.

quando realizo esse update UPDATE TB_ORDEM_DE_SERVIÇO
SET [DATA_DIF_PRI_PREV_INICIAL_X_PRI_PREV_FINAL] = DATEPART(WEEKDAY,DATEDIFF(DAY,[PRIMEIRA PREV INICIAL AMERICANA],[PRIMEIRA PREV FINAL AMERICANA]))

o erro aparece, o esquisito é que nesse update que é praticamente mesma coisa só muda a ordem das datas que busco a diferença ele executa,


UPDATE TB_ORDEM_DE_SERVIÇO
SET [DATA_DIF_PRI_PREV_FINAL_X_PRI_PREV_INICIAL] = DATEPART(WEEKDAY,DATEDIFF(DAY,[PRIMEIRA PREV FINAL AMERICANA],[PRIMEIRA PREV INICIAL AMERICANA]))

Alguem sabe o porque ?

Att
Caique Eloy

Caique Eloy

Responder

Post mais votado

27/11/2019

Esta instrução está correta?
UPDATE TB_ORDEM_DE_SERVIÇO
	SET [DATA_DIF_PRI_PREV_FINAL_X_PRI_PREV_INICIAL] = DATEPART(WEEKDAY,DATEDIFF(DAY,[PRIMEIRA PREV FINAL AMERICANA],[PRIMEIRA PREV INICIAL AMERICANA]))

substituindo:
[DATA_DIF_PRI_PREV_FINAL_X_PRI_PREV_INICIAL] = DATEPART(WEEKDAY,DATEDIFF(DAY,'25/11/2019','22/11/2019'))
[DATA_DIF_PRI_PREV_FINAL_X_PRI_PREV_INICIAL] = DATEPART(WEEKDAY, -3) -- VALOR NEGATIVO
[DATA_DIF_PRI_PREV_FINAL_X_PRI_PREV_INICIAL] = 6

WEEKDAY retorna um valor entre 1 e 7, representando os dias da semana (Seg, Ter, etc).
Acho que não faz sentido pegar o dia da semana de -3.
O dia da semana deveria ser obtido de uma data.

Talvez o correto seja somente:
UPDATE TB_ORDEM_DE_SERVIÇO
	SET [DATA_DIF_PRI_PREV_FINAL_X_PRI_PREV_INICIAL] = DATEDIFF(DAY,[PRIMEIRA PREV FINAL AMERICANA],[PRIMEIRA PREV INICIAL AMERICANA])






Emerson Nascimento

Emerson Nascimento
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar