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
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Daran sehen Sie, daß der 18.06.1961 150 Tage vor dem 15.11.1961 liegt. Vorsicht mit<br />
den Ergebnissen einer DATE-Subtraktion: Wenn irgendwelche Tageszeitkomponenten<br />
daran beteiligt sind, bekommen Sie eine Bruchzahl als Ergebnis. Schauen Sie sich noch<br />
einmal dieselbe Subtraktion an, doch diesmal mit ein paar sorgfältig ausgewählten Uhrzeitbestandteilen:<br />
BEGIN<br />
DBMS_OUTPUT.PUT_LINE (<br />
TO_DATE('15-Nov-1961 12:01 am','dd-Mon-yyyy hh:mi am')<br />
- TO_DATE('18-Jun-1961 11:59 pm','dd-Mon-yyyy hh:mi am')<br />
);<br />
END;<br />
Die Ausgabe lautet:<br />
149.001388888888888888888888888888888889<br />
Wenn Sie sich dafür interessieren, wie viele Kalendertage zwischen den beiden im Beispiel<br />
angegebenen Daten liegen, dann ist dieses Ergebnis nicht korrekt. Es ist jedoch korrekt,<br />
wenn Sie den Standpunkt einnehmen, daß Sie die Anzahl der 24-St<strong>und</strong>en-<br />
Zeiträume zwischen den beiden DATE-Werten wissen möchten. Aber die meisten interessieren<br />
sich lediglich dafür, daß die beiden Daten um 150 Tage auseinanderliegen, <strong>und</strong><br />
nicht dafür, daß der eine DATE-Wert um 149,00139 24-St<strong>und</strong>en-Zeiträume vor dem<br />
anderen liegt. Sie erhalten korrekte Ergebnisse, wenn Sie die Funktion TRUNC auf jeden<br />
der beiden <strong>Datumswerte</strong> anwenden:<br />
BEGIN<br />
DBMS_OUTPUT.PUT_LINE (<br />
TRUNC(TO_DATE('15-Nov-1961 12:01 am','dd-Mon-yyyy hh:mi am'))<br />
- TRUNC(TO_DATE('18-Jun-1961 11:59 pm','dd-Mon-yyyy hh:mi am'))<br />
);<br />
END;<br />
Die Ausgabe lautet:<br />
150<br />
TRUNC tilgt Tageszeit-Komponenten aus den beiden DATEs, so daß das Ergebnis der<br />
Subtraktion dasselbe wie im ersten Beispiel in diesem Abschntt ist, also die Anzahl der<br />
Kalendertage zwischen den beiden Daten. TRUNC ist im Zusammenhang mit DATEs<br />
eine sehr nützliche Funktion <strong>und</strong> wird weiter unten im Abschnitt »Datums-/Uhrzeit-<br />
Funktionen« genauer erklärt.<br />
Das Ergebnis einer Subtraktion eines DATEs von einem anderen ist eine<br />
NUMBER. Das Ergebnis einer Subtraktion eines TIMESTAMP-Typs von<br />
einem anderen ist ein INTERVAL DAY TO SECOND.<br />
316 | Kapitel <strong>10</strong>: <strong>Datumswerte</strong> <strong>und</strong> <strong>Zeitstempel</strong>