Datum-Zeit-Arithmetik und -Vergleiche
Die Werte DATE, TIME und TIMESTAMP können mit einem anderen Wert desselben Typs verglichen werden. Vergleiche sind chronologisch. Datum/Zeit-Werte können auch inkrementiert, dekrementiert und subtrahiert werden.
Wenn DB2 als Datenspeicher verwendet wird, kann auch die DB2-Zeichenfolgedarstellung der Typen DATE, TIME und TIMESTAMP verwendet werden.
Format | Datumsformat | Datumsbeispiele | Zeitformat | Zeitbeispiele |
---|---|---|---|---|
ISO | jjjj-mm-tt | 1987-02-24 1987-2-24 | hh.mm.ss | 13.50.00 13.50 |
USA | mm/tt/jjjj | 2/24/1987 | hh:mm AM oder PM | 1:50 pm 02:10 AM |
EUR | tt.mm.jjjj | 24.02.1987 24.2.1987 | hh.mm.ss | 13.50.00 13.55 |
JIS | jjjj-mm-tt | 1987-02-24 | hh:mm:ss | 13:50 13:50:05 |
Beispiel 1: Arithmetische Vergleiche von Datum und Zeit
e.hiredate > '1990-02-24'
'1990-02-24-13.50.00.000000'
oder
'1990-02-24-13.50.00'
Wenn DB2 als Datenspeicher verwendet wird, können dezimale Zeitdauern aus DB2 für Ausdrücke und Vergleiche verwendet werden. Eine Datumsdauer ist eine dezimale Zahl (8,0), die die Differenz zwischen zwei Datumsangaben im Format JJJJMMTT darstellt. Eine Zeitdauer ist eine dezimale Zahl (6,0), die die Differenz zwischen zwei Zeitwerten im Format HHMMSS darstellt. Eine Zeitmarkendauer ist eine dezimale Zahl (20,6), die die Differenz zwischen zwei Zeitmarkenwerten im Format JJJJMMTTHHMMSS.ZZZZZZ darstellt (dabei ist ZZZZZZ die Anzahl der Mikrosekunden, die hinter dem Dezimalzeichen steht).
Zwei Datumswerte (oder Zeitwerte oder Zeitmarkenwerte) können voneinander subtrahiert werden, was eine Zeitdauer als Ergebnis liefert. Ist der zweite Operand größer als der erste, so ergibt sich für die Dauer eine negative Dezimalzahl. Eine Dauer kann von einem Datum-/Zeitwert subtrahiert oder zu ihm hinzuaddiert werden, was als Ergebnis einen neuen Datum-/Zeitwert liefert.
Beispiel 2: Arithmetische Vergleiche von Datum und Zeit
DATE('3/15/2000') - '12/31/1999' ergibt die Dezimalzahl 215, die einer Dauer von 0 Jahren, 2 Monaten und 15 Tagen entspricht.
Zeiträume sind eigentlich Dezimalzahlen und können in arithmetischen Ausdrücken und Vergleichen verwendet werden.
( DATE('3/15/2000') - '12/31/1999' ) + 14 > 215 evaluates to TRUE.
DATE('12/31/1999') + DECIMAL(215,8,0) gibt den Datumswert 3/15/2000 zurück.
TIME('11:02:26') - '00:32:56' ergibt die Dezimalzahl 102930, die einer Zeitdauer von 10 Stunden, 29 Minuten und 30 Sekunden entspricht.
TIME('00:32:56') + DECIMAL(102930,6,0) ergibt den Zeitwert 11:02:26.
TIME('00:00:59') + DECIMAL(240000,6,0) ergibt den Zeitwert 00:00:59.
e.hiredate + DECIMAL(500,8,0) > '2000-10-01' bedeutet einen Vergleich des Einstellungsdatums plus 5 Monate mit dem Datum 10/01/2000.