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.

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>

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!