Pergunta

Estou executando uma consulta simples do datediff, mas não parece calcular os dias corretamente ou estou fazendo algo errado.

Se eu correr

PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01)
RETURN 19

Qual é correto. Se eu mudar o mês no primeiro encontro para fevereiro (02), recebo algo estranho.

PRINT DATEDIFF(Day, 2010-02-20, 2010-01-01)
RETURN 20

Agora não deveria ser 48 ou algo assim?

Alguém pode ver o que estou fazendo de errado ou essa não é a função correta a usar se eu quiser o número de dias entre essas datas?

Eu tentei tirar um encontro do outro:

PRINT (2010-02-20) - (2010-01-01)
RETURN -20

Qualquer ajuda muito apreciada.

Obrigado J.

Foi útil?

Solução

Você está faltando as citações

PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')

Você está recebendo 20 porque

2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988

2008 - 1988 = 20

Outras dicas

Se você correr desta maneira:

SELECT  2010-02-20, 2010-01-01

você verá

1988  2008

quais são os resultados ou as operações inteiras que você coloca aqui.

Inclua as constantes de data em citações únicas:

SELECT  DATEDIFF(Day, '2010-02-20', '2010-01-01')

--
-50

Funciona se você cercar suas datas com apóstrofos -

SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')

-41
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20') 

Isso leva a 2ª data - primeira data. Não se esqueça ''.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top