Datumsdifferenzen

Die Funktion DATEDIFF berechnet die Differenz zwischen zwei Datumswerten und gibt eine Ganzzahl (mit abgeschnittener Bruchkomponente) in den angegebenen Datums-/Zeiteinheiten zurück. Die allgemeine Form des Ausdrucks ist

DATEDIFF(datetime2, datetime1, “unit”).

Dabei sind datetime2 und datetime1 Variablen im Datums-oder Zeitformat (oder numerische Werte, die gültige Datums-/Uhrzeitwerte darstellen) und "unit" ist einer der folgenden Zeichenfolgeliteralwerte, eingeschlossen in Anführungszeichen:

  • Jahre
  • Quartale
  • Monate
  • Wochen
  • Tage
  • Stunden
  • Minuten
  • Sekunden

Beispiel

DATA LIST FREE /date1 date2 (2ADATE10).
BEGIN DATA
1/1/2004 2/1/2005
1/1/2004 2/15/2005
1/30/2004 1/29/2005
END DATA.
COMPUTE years=DATEDIFF(date2, date1, "years").
  • Das Ergebnis ist der ganzzahlige Teil der Anzahl der Jahre zwischen den beiden Datumsangaben, wobei jede Bruchkomponente abgeschnitten wird.
  • Ein "Jahr" ist als Monat und Tag definiert, ein Jahr vor oder nach dem zweiten Datumsargument.
  • Für die ersten beiden Fälle ist das Ergebnis 1, da in beiden Fällen die Anzahl der Jahre größer-gleich 1 und kleiner als 2 ist.
  • Im dritten Fall ist das Ergebnis 0, da die Differenz einen Tag vor einem Jahr liegt, basierend auf der Definition des Jahres.

Beispiel

DATA LIST FREE /date1 date2 (2ADATE10).
BEGIN DATA
1/1/2004 2/1/2004
1/1/2004 2/15/2004
1/30/2004 2/1/2004
END DATA.
COMPUTE months=DATEDIFF(date2, date1, "months").
  • Das Ergebnis ist der ganzzahlige Teil der Anzahl der Monate zwischen den beiden Datumsangaben, wobei jede Bruchkomponente abgeschnitten wird.
  • Ein "Monat" ist als derselbe Tag des Monats definiert, ein Kalendermonat vor oder nach dem zweiten Datumsargument.
  • Für die ersten beiden Fälle wird das Ergebnis 1 sein, da sowohl der 1. Februar als auch der 15. Februar 2004 größer-gleich einem Monat und weniger als zwei Monate nach dem 1. Januar 2004 sind.
  • Im dritten Fall ist das Ergebnis 0. Definitionsgemäß liegt jedes Datum im Februar 2004 unter einem Monat nach dem 30. Januar 2004, was einen Wert von 0 ergibt.