SQL DATEDIFF Ein Problem?
Frage
Ich bin eine einfache DATEDIFF Abfrage läuft, aber es scheint nicht die Tage richtig zu berechnen, oder ich bin etwas falsch zu machen.
Wenn ich ausführen
PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01)
RETURN 19
Was ist richtig. Wenn ich den Monat im ersten Datum ändern Februar (02) ich etwas Fremdes bekommen.
PRINT DATEDIFF(Day, 2010-02-20, 2010-01-01)
RETURN 20
Nun sollte es nicht mehr als 48 oder so etwas?
Kann jemand sehen, was ich falsch mache, oder ist dies nicht die richtige Funktion zu verwenden, wenn ich die Zahl der Tage zwischen diesen Daten möchten?
Ich habe ein Datum aus dem anderen versuchte unter:
PRINT (2010-02-20) - (2010-01-01)
RETURN -20
Jede Hilfe sehr geschätzt.
Danke J.
Lösung
Sie fehlen Zitate
PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')
Sie sind immer 20, weil
2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988
2008 - 1988 = 20
Andere Tipps
Wenn Sie es auf diese Weise ausgeführt werden:
SELECT 2010-02-20, 2010-01-01
Sie werden sehen,
1988 2008
, die Ergebnisse oder die Integer-Operationen, dass Sie hier stellen.
Schließen Sie die Datumskonstanten in einfache Anführungszeichen:
SELECT DATEDIFF(Day, '2010-02-20', '2010-01-01')
--
-50
Es funktioniert, wenn Sie Ihre Termine mit Apostroph umgeben -
SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')
-41
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20')
nimmt Das zweite Datum - erstes Datum. Vergessen Sie nicht, ''.