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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

.4193548387096774193548387096774193548387<br />

-1.03225806451612903225806451612903225806<br />

-1.06451612903225806451612903225806451613<br />

-1.32258064516129032258064516129032258065<br />

Wenn Sie daraus ein Muster erkennen, haben Sie recht. Wie bereits gesagt, berechnet<br />

MONTHS_BETWEEN die Bruchkomponente aus der Anzahl der Monate <strong>und</strong> legt dabei<br />

31 Tage zugr<strong>und</strong>e. Daher wird jeder zusätzliche Tag, der über einen vollen Monat hinausgeht,<br />

als 1/31 Monat gerechnet <strong>und</strong>:<br />

1 geteilt durch 31 = .032258065 – ungefaehr!<br />

Nach dieser Regel müßte zwischen dem 31. Januar <strong>und</strong> dem 28. Februar 1994 ein Monat<br />

liegen – eine hübsche, r<strong>und</strong>e ganze Zahl. Doch für die Anzahl der Monate zwischen dem<br />

31. Januar 1994 <strong>und</strong> dem 1. März 1994 würde .032258065 hinzuaddiert.<br />

Die Funktionen ROUND <strong>und</strong> TRUNC<br />

Die Funktion ROUND r<strong>und</strong>et einen Datumswert nach den Vorgaben einer Formatmaske<br />

auf das nächste Datum auf, <strong>und</strong> die Funktion TRUNC schneidet ein Datum nach den<br />

Vorgaben einer Formatmaske ab. ROUND <strong>und</strong> TRUNC für Datums- <strong>und</strong> Uhrzeitwerte<br />

funktionieren analog zu ROUND <strong>und</strong> TRUNC für Zahlen (siehe »Funktionen zum R<strong>und</strong>en<br />

<strong>und</strong> Abschneiden« in Kapitel 9). Sie sind folgendermaßen spezifiziert:<br />

FUNCTION ROUND (datum_in IN DATE [, format_maske VARCHAR2]) RETURN DATE<br />

FUNCTION TRUNC (datum_in IN DATE [, format_maske VARCHAR2]) RETURN DATE<br />

Eine häufige Anwendung für die beiden Funktionen besteht darin, die Uhrzeitkomponente<br />

eines DATE-Werts auf Mitternacht (12:00:00 AM) zu setzen. Nach Konvention ist<br />

Mitternacht der Wert, den Sie nutzen, wenn Sie sich nicht für die Uhrzeit, sondern nur<br />

für das Datum interessieren. Der Unterschied zwischen den beiden Funktionen liegt in<br />

der Frage, ob sie die Uhrzeitkomponente nun komplett ignorieren oder sie zum Auf- oder<br />

Abr<strong>und</strong>en des resultierenden DATE-Werts einsetzen. Das folgende Beispiel zeigt die verschiedenen<br />

Ergebnisse der beiden Funktionen:<br />

DECLARE<br />

date_in DATE := TO_DATE('24-Feb-2002 05:16:00 PM'<br />

,'DD-MON-YYYY HH:MI:SS AM');<br />

date_ro<strong>und</strong>ed DATE;<br />

date_truncated DATE;<br />

BEGIN<br />

date_ro<strong>und</strong>ed := ROUND(date_in);<br />

date_truncated := TRUNC(date_in);<br />

DBMS_OUTPUT.PUT_LINE(<br />

TO_CHAR(date_ro<strong>und</strong>ed, 'DD-MON-YYYY HH:MI:SS AM'));<br />

DBMS_OUTPUT.PUT_LINE(<br />

TO_CHAR(date_truncated,'DD-MON-YYYY HH:MI:SS AM'));<br />

END;<br />

336 | Kapitel <strong>10</strong>: <strong>Datumswerte</strong> <strong>und</strong> <strong>Zeitstempel</strong>

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!