KAPITEL 10 Datumswerte und Zeitstempel - beim O'Reilly Verlag
KAPITEL 10 Datumswerte und Zeitstempel - beim O'Reilly Verlag
KAPITEL 10 Datumswerte und Zeitstempel - beim O'Reilly Verlag
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Funktion zur Berechnung des absoluten Werts gibt, wie dies z.B. die Funktion ABS für<br />
numerische Werte leistet.<br />
DATEs mit CAST in TIMESTAMPs umwandeln<br />
Aus dem vorigen Abschnitt wissen Sie noch, daß jeder Ausdruck ein Ergebnis eines definierten<br />
Datentyps bringt. Das Ergebnis einer Subtraktion, an der zwei TIMESTAMPs<br />
beteiligt sind, ist ein Wert vom Typ INTERVAL DAY TO SECOND. Um die Kompatibilität<br />
mit älteren Versionen zu gewährleisten, ist das Ergebnis einer Subtraktion mit zwei<br />
DATE-Typen immer noch ein numerischer Wert. Wenn Sie ein DATE von einem anderen<br />
subtrahieren <strong>und</strong> einen Wert vom Typ INTERVAL DAY TO SECOND zurückgeben<br />
möchten, müssen Sie infolgedessen die DATE-Werte mit CAST in TIMESTAMP-Werte<br />
umwandeln. Ein Beispiel:<br />
DECLARE<br />
a DATE;<br />
b DATE;<br />
c INTERVAL DAY(3) TO SECOND(0);<br />
BEGIN<br />
a := TO_DATE('15-Nov-1961 12:01 am','dd-Mon-yyyy hh:mi am');<br />
b := TO_DATE('18-Jun-1961 11:59 pm','dd-Mon-yyyy hh:mi am');<br />
c := CAST(a AS TIMESTAMP) - CAST(b AS TIMESTAMP);<br />
DBMS_OUTPUT.PUT_LINE(c);<br />
END;<br />
Die Ausgabe lautet:<br />
+149 00:02:00<br />
Wenn Sie in demselben Subtraktionsausdruck Werte der Typen DATE <strong>und</strong> TIMESTAMP<br />
miteinander mischen, wandelt PL/SQL die DATEs implizit in TIMESTAMPs um. Ein Beispiel:<br />
DECLARE<br />
a DATE;<br />
b TIMESTAMP;<br />
c INTERVAL DAY(3) TO SECOND(0);<br />
d INTERVAL DAY(3) TO SECOND(0);<br />
BEGIN<br />
a := TO_DATE('15-Nov-1961 12:01 am','dd-Mon-yyyy hh:mi am');<br />
b := TO_TIMESTAMP('18-Jun-1961 11:59 pm','dd-Mon-yyyy hh:mi am');<br />
c := a - b;<br />
d := b - a;<br />
DBMS_OUTPUT.PUT_LINE(c);<br />
DBMS_OUTPUT.PUT_LINE(d);<br />
END;<br />
Datums-/Uhrzeit-Arithmetik | 321