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.
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