Question

Je dirigeais une simple requête DATEDIFF mais il ne semble pas calculer les jours correctement ou je fais quelque chose de mal.

Si je lance

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

Ce qui est correct. Si je change le mois au cours de la première date à février (02) je reçois quelque chose d'étrange.

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

devrait-il pas 48 ou quelque chose?

Quelqu'un peut-il voir ce que je fais mal ou est-ce pas la fonction correcte à utiliser si je veux que le Nombre de jours entre ces dates?

Je l'ai essayé de prendre une date à partir de l'autre:

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

Toute aide très appréciée.

Merci J.

Était-ce utile?

La solution

Vous Guillemets manquants

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

Vous obtenez 20 parce que

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

2008 - 1988 = 20

Autres conseils

Si vous exécutez cette façon:

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

vous verrez

1988  2008

qui sont les résultats ou les opérations entières que vous avez ici.

Entourez les constantes de date dans des guillemets simples:

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

--
-50

Il fonctionne si vous entourez vos dates avec apostrophes -

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

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

Cela prend 2 la date - première date. Ne pas oublier ''.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top