ERRO Arithmetic overflow error converting expression to data type datetime.

27/11/2019

13

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