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
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Das Datum <strong>und</strong> die Uhrzeit in diesem Beispiel entpuppen sich als 31. Dezember 1998, 15<br />
1/2 Sek<strong>und</strong>en nach 8:30 in der Früh. Da keine Zeitzone angegeben wurde, nimmt Oracle<br />
an, daß die Zeitzone Ihrer aktuellen Sitzung gilt. Jede Oracle-Sitzung steht mit einer Zeitzone<br />
in Zusammenhang, die Sie mit folgender Abfrage herausfinden:<br />
SQL> SELECT SESSIONTIMEZONE FROM DUAL;<br />
SESSIONTIMEZONE<br />
---------------------------------------<br />
-05:00<br />
Die Notation –05:00 bedeutet, daß Ihre Sitzungszeitzone fünf St<strong>und</strong>en <strong>und</strong> null Minuten<br />
hinter der UTC zurück ist. Diese Differenz entspricht der Eastern Standard Time in den<br />
USA. Eine Verschiebung um +<strong>10</strong>:00 hingegen würde auf die Australian Eastern Standard<br />
Time hinauslaufen.<br />
Als nächstes wollen wir die Zeitzone mit einer Verschiebung um St<strong>und</strong>en <strong>und</strong> Minuten von<br />
der UTC aus darstellen. Achten Sie auf die Verwendung von TZH <strong>und</strong> TZM, die im Eingabe-String<br />
die Stellen markieren, an denen die St<strong>und</strong>en- <strong>und</strong> Minutenverschiebung steht:<br />
TO_TIMESTAMP_TZ ('123188 083015.50 -5:00', 'MMDDYY HHMISS.FF TZH:TZM')<br />
In diesem Beispiel wird der Datums-/Uhrzeitwert als Eastern Standard Time interpretiert<br />
(unabhängig davon, welche Ihre Sitzungszeitzone ist).<br />
Das nächste Beispiel zeigt, wie die Zeitzone mit einem Regionsnamen angegeben wird.<br />
Hier ist es America/Detroit, was der Eastern Time in den USA entspricht. Achten Sie<br />
auch hier wieder auf TZR in der Formatmaske: An dieser Stelle im Eingabe-String steht<br />
der Regionsname der Zeitzone.<br />
TO_TIMESTAMP_TZ ('27-Oct-2002 01:30:00.00 America/Detroit',<br />
'dd-Mon-yyyy hh:mi:ssxff TZR')<br />
Dieses Beispiel ist deshalb interessant, weil es nicht die Eastern Standard Time, sondern<br />
die Eastern Time darstellt. Der Unterschied besteht darin, daß sich »Eastern Time«<br />
sowohl auf die Eastern Standard Time als auch auf die Eastern Daylight Time beziehen<br />
kann, je nachdem, ob gerade Sommerzeit ist oder nicht. Und es könnte tatsächlich Sommerzeit<br />
sein! Wir haben dieses Beispiel mit Bedacht so formuliert, daß es mehrdeutig ist.<br />
Der 27.<strong>10</strong>.2002 ist das Datum, an dem die Sommerzeit endet <strong>und</strong> die Uhr um 2:00 Uhr<br />
morgens auf 1:00 Uhr zurückgestellt wird. Also wird es an diesem Tag zweimal halb zwei<br />
Uhr in der Früh: das erste Mal um 1:30 AM Eastern Daylight Time <strong>und</strong> das zweite Mal<br />
um 1:30 AM Eastern Standard Time. Also: Wie spät ist es wirklich, wenn wir sagen, es ist<br />
halb zwei Uhr morgens am 27. Oktober 2002?<br />
Der Regionsname der Zeitzone sagt für sich genommen noch nichts über Standardzeit<br />
oder Sommerzeit aus. Um diese Mehrdeutigkeit loszuwerden, müssen Sie auch eine<br />
Abkürzung der Zeitzone angeben. Das haben wir im folgenden Beispiel getan. Beachten<br />
Sie, daß jetzt auch TZD in der Formatmaske steht, um anzugeben, wo die Zeitzonenabkürzung<br />
hinkommt:<br />
Datums- <strong>und</strong> <strong>Zeitstempel</strong>-Konvertierungen | 293