09.05.2014 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!