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.
Vorsicht mit den Sek<strong>und</strong>enbruchteilen: Da das Formatelement FF sie im Ausgabeformatmodell<br />
darstellt, ist man versucht, die Anzahl der Dezimalstellen als Anzahl von Fs anzugeben.<br />
Tun Sie das nicht! Es funktioniert nicht. Das folgende Beispiel ist ein Versuch, mit<br />
FFFFF fünf Dezimalstellen zu erzielen:<br />
DECLARE<br />
A TIMESTAMP WITH TIME ZONE;<br />
BEGIN<br />
A := TIMESTAMP '2002-02-19 13:52:00.123456789 -5:00';<br />
DBMS_OUTPUT.PUT_LINE(TO_CHAR(a,'YYYY-MM-DD HH:MI:SS.FFFFF AM TZH:TZM'));<br />
END;<br />
Die Ausgabe lautet:<br />
DECLARE<br />
*<br />
ERROR at line 1:<br />
ORA-01821: date format not recognized<br />
ORA-06512: at line 5<br />
Wenn Sie nur fünf Dezimalstellen möchten, müssen Sie Ihre <strong>Zeitstempel</strong>-Variable als<br />
TIMESTAMP(5) deklarieren. Ein Beispiel:<br />
DECLARE<br />
A TIMESTAMP(5) WITH TIME ZONE;<br />
BEGIN<br />
A := TIMESTAMP '2002-02-19 13:52:00.123456789 -5:00';<br />
DBMS_OUTPUT.PUT_LINE(TO_CHAR(a,'YYYY-MM-DD HH:MI:SS.FF AM TZH:TZM'));<br />
END;<br />
Die Ausgabe lautet:<br />
2002-02-19 01:52:00.123460000 PM -05:00<br />
PL/SQL procedure successfully completed.<br />
Beachten Sie, daß eine R<strong>und</strong>ung stattgef<strong>und</strong>en hat. In der Eingabe waren es<br />
00.123456789 Sek<strong>und</strong>en, <strong>und</strong> in der Ausgabe wurde dieser Wert mit 00.12346 auf fünf<br />
Dezimalstellen ger<strong>und</strong>et (nicht abgeschnitten).<br />
Es ist schlecht, daß Oracle die Anzahl der Dezimalstellen direkt an die<br />
Genauigkeit der zugehörigen <strong>Zeitstempel</strong>-Variable bindet. Wir sind der<br />
Meinung, daß es möglich sein sollte, eine andere Genauigkeit als die<br />
gespeicherte anzuzeigen. Das funktioniert mit NUMBERs <strong>und</strong> sollte auch<br />
bei TIMESTAMPs funktionieren.<br />
Hier kann es leicht zu einem Ausrutscher in Form eines falschen Datumsformats kommen.<br />
Durch die Einführung der TIMESTAMP-Typen wurde dies sogar noch wahrscheinlicher.<br />
Formatelemente, die für TIMESTAMP-Typen zulässig sind, sind für DATE<br />
unzulässig. Beachten Sie die Ergebnisse im folgenden Beispiel, in dem FF, TZH <strong>und</strong> TZM<br />
zur Konvertierung eines DATEs in einen String eingesetzt werden:<br />
DECLARE<br />
302 | Kapitel <strong>10</strong>: <strong>Datumswerte</strong> <strong>und</strong> <strong>Zeitstempel</strong>