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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!