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.

FROM dual;<br />

D := INTERVAL '1' HOUR + INTERVAL '02' MINUTE;<br />

END;<br />

In den Releases 1 <strong>und</strong> 2 von Oracle9i funktioniert der Ausdruck INTER-<br />

VAL ‘1:02’ HOUR TO MINUTE zwar in einer SQL-Anweisung, aber<br />

nicht in einer PL/SQL-Anweisung. Überdies steht in der Fehlermeldung,<br />

Sie hätten das Schlüsselwort BULK im verkehrten Kontext benutzt. Dieser<br />

Bug ist bekannt, <strong>und</strong> wir rechnen damit, daß er in einem künftigen Release<br />

behoben wird.<br />

Da kein INTERVAL-Typ Monate <strong>und</strong> Tage zugleich enthält, ist jeder Zeitraum, der beides<br />

einschließen soll, ungültig. Der folgende Ausdruck löst z.B. einen Fehler aus:<br />

INTERVAL '1-15' MONTH TO DAY<br />

Es gibt auch keinen Weg, ein Element zu überspringen. Sie können z.B. nicht die Werte<br />

für Tage <strong>und</strong> Minuten angeben, ohne zugleich auch irgendeine Anzahl von St<strong>und</strong>en zu<br />

nennen.<br />

Eine sehr praktische Sache bei Oracle ist, daß es die Zeitraumwerte für Sie normalisiert.<br />

Im folgenden Beispiel werden 72 St<strong>und</strong>en <strong>und</strong> 15 Minuten zu 3 Tagen, 0 St<strong>und</strong>en <strong>und</strong> 15<br />

Minuten normalisiert:<br />

DECLARE<br />

A INTERVAL DAY TO SECOND;<br />

BEGIN<br />

SELECT INTERVAL '72:15' HOUR TO MINUTE INTO A FROM DUAL;<br />

DBMS_OUTPUT.PUT_LINE(A);<br />

END;<br />

Die Ausgabe lautet:<br />

+03 00:15:00.000000<br />

Komischerweise normalisiert Oracle nur den größten Wert. Wenn Sie versuchen, einen<br />

Zeitraum von 72:75 (72 St<strong>und</strong>en <strong>und</strong> 75 Minuten) anzugeben, wird eine Fehler ausgelöst.<br />

Zeiträume für die Anzeige formatieren<br />

Bisher haben wir in diesem Abschnitt über die Konvertierung von Zeiträumen die implizite<br />

Konvertierung von Oracle genutzt, um die Zeiträume für die Anzeige zu formatieren.<br />

Vielleicht denken Sie nun, Sie könnten TO_CHAR in Verbindung mit einer Formatmaske<br />

einsetzen, um die Zeitraumformatierung für die Anzeige besser steuern zu können.<br />

Doch erstaunlicherweise geht das nicht! TO_CHAR ist für die Formatierung von<br />

Zeiträumen völlig nutzlos. Ein Beispiel:<br />

DECLARE<br />

Datums- <strong>und</strong> <strong>Zeitstempel</strong>-Konvertierungen | 309

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!