SQL DATEDIFF ne fonctionne pas?
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.
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 ''.