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.

War es hilfreich?

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, ''.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top