Konvertierung Unix Timestamp zu Oracle Date

Der Unix Timestamp (der in vielen Applikationen benutzt wird) und Oracles Datums Format sind leider sehr unterschiedlich. Während Unix die Sekunden ab dem 01.01.1970 zählt, beginnt bei Oracle die Zeitrechnung schon 4000 vor Christi Geburt. Ca. 2 mal im Jahr brauche ich diese Umrechnung und jedes Mal frage ich mich, wie war das noch. Heute ist es mir einen Blogeintrag wert.
Es gibt verschieden Ansätze um vom Unix Timestamp zum Oracle Date Format zu gelangen. Hier sind 2 zur Auswahl:

select to_char(TO_DATE('19700101000000','YYYYMMDDHH24MISS')
   + NUMTODSINTERVAL(1094165422, 'SECOND'), 'dd.mm.yyyy hh24:mi') datum
from dual;

02.09.2004 22:50

Eine fertige Funktion mit Fehlerbehandlung gibt es hier.

Fragt man Tom auf asktom.oracle.com, so findet man dort auch für verschiedene Zeitzonen eine Lösung:

-- normal
SELECT to_char(to_date('01011970','ddmmyyyy') 
   + 1/24/60/60 * 1094165422, 'dd.mm.yyyy hh24:mi' ) from dual

02.09.2004 22:50

-- mit abweichender Zeitzone
SELECT to_char(new_time( to_date('01011970','ddmmyyyy') 
   + 1/24/60/60 * 1094165422,'GMT', 'EDT' ), 'dd.mm.yyyy hh24:mi' ) from dual

02.09.2004 18:50

3 Kommentare

  1. Was davon ist jetzt das Feld, welches du umwandelst?

  2. 1094165422 ist in diesem Beispiel der Unix Timestamp um den es geht und dual ist die Hilfstabelle in Oracle, die man für Berechnungen nutzen kann. Die Berechnung selbst kann man davon unabhängig aber auch in PL/SQL benutzen.

  3. […] schau mal dort. Konvertierung Unix Timestamp zu Oracle Date all-IT […]

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: