Timestamp-Datentyp in Unix-Timestamp Oracle konvertieren

7

Ich habe einen Zeitstempel-Datentyp in der Datenbank mit dem Format 24-JuL-11 10.45.00.000000000 AM und möchte ihn in einen Unix-Zeitstempel konvertieren, wie bekomme ich ihn?

    
deepti 24.08.2012, 08:26
quelle

7 Antworten

15

Diese Frage ist ziemlich genau das Gegenteil von Konvertiere Unixtime in Datetime SQL (Oracle)

Wie Justin Cave sagt:

  

Es gibt keine eingebauten Funktionen. Aber es ist relativ einfach zu schreiben   ein. Da ein Unix-Zeitstempel die Anzahl der Sekunden seit dem 1. Januar ist,   1970

Wenn Sie zwei Daten voneinander entfernen, die sich in der Anzahl der Tage zwischen ihnen ergeben, können Sie Folgendes tun:

%Vor%

Seit 1970 ist die Anzahl der Sekundenbruchteile in Sekunden gleichgültig. Sie können es dennoch mit einem Zeitstempel-Datentyp aufrufen ...

%Vor%

Als Antwort auf Ihren Kommentar tut es mir leid, aber ich sehe dieses Verhalten nicht:

%Vor%

Es gibt 3.600 Sekunden Unterschied, d.h. 1 Stunde.

    
Ben 24.08.2012, 08:42
quelle
10

Ich weiß, dass eine Antwort bereits akzeptiert wurde, aber ich denke, es sollte klargestellt werden, dass die Funktion in dieser Antwort den Zeitzonen-Offset des Übergabedatums nicht berücksichtigt. Ein geeigneter Unix-Zeitstempel sollte bei GMT (+0) berechnet werden. Oracles to_date -Funktion setzt voraus, dass das übergebene Datum in der lokalen Zeitzone liegt, sofern nicht anders angegeben. Dieses Problem wird durch die Tatsache noch verschärft, dass die Sommerzeit eine echte Sache ist. Ich überkam dieses Problem mit der folgenden Funktion:

%Vor%

Ich habe einige Begleitfunktionen, unix_time und unix_time_to_date , verfügbar unter Ссылка . Ich kann nicht glauben, dass Oracle es bis 11g geschafft hat, ohne diese zu implementieren.

    
James Sumners 02.11.2012 00:25
quelle
1

für das Datum:

%Vor%

für Zeitstempel:

%Vor%     
Andre Kirpitch 16.04.2014 13:36
quelle
0

Das ist, was ich gefunden habe:

%Vor%

FWIW

    
rogerdpack 25.06.2014 22:36
quelle
0
%Vor%     
user5193849 05.08.2015 11:57
quelle
0

Ich verwende folgende Methode, die sich ein wenig von anderen Antworten unterscheidet, indem sie sessiontimezone() function benutzt, um das Datum richtig zu bekommen

%Vor%     
dpedro 25.04.2017 14:26
quelle
0
%Vor%     
Piotr Rogowski 16.01.2018 08:26
quelle