2010-09-29 7 views
12

Ich habe die folgende Tabelle:konvertieren Epoche bisher in sqlplus/Oracle

SQL> desc recording 
Name     Null? Type 
-------------------- -------- ------ 
CAPTUREID   NOT NULL NUMBER(9) 
STARTDATE   NOT NULL DATE 
ENDDATE      DATE 
STATE       NUMBER(1) 
ESTIMATEDENDTIME    NUMBER(13) 

Hier ist eine einzige Zeile für diese Tabelle:

SQL> select * from recording where CAPTUREID=14760457; 

CAPTUREID STARTDATE   ENDDATE    STATE ESTIMATEDENDTIME 
---------- ------------------- ------------------- ----- ---------------- 
    14760457 29/09/2010 08:50:01 29/09/2010 09:52:04  0 1285746720000 

Ich bin ziemlich sicher, dass dies so gefragt wurde, viele Male vorher, aber alle Lösungen, die ich bis jetzt gefunden habe, haben nicht wirklich funktioniert, also ... Wie konvertiere ich ESTIMATEDENDTIME von seiner ursprünglichen Epoche Form zu einem DD/MM/YYY HH:MI:SS Format in einer einzigen Abfrage in SQLPLUS?

Danke!

Antwort

25

In Oracle, X zu einem Datum hinzufügen wird Ihnen ein Datum X Tage später zurück.

Wenn ESTIMATEDENDTIME ist Millisekunden seit Epoch dann Sie

DATE '1970-01-01' + (1/24/60/60/1000) * ESTIMATEDENDTIME 

tun konnte, und verwenden Sie dann to_char das richtige Format des resultierenden Zeitpunkt zu erreichen. z:

SELECT 
    captureid 
, startdate 
, enddate 
, state 
, estimatedendtime 
, DATE '1970-01-01' + (1/24/60/60/1000) * estimatedendtime AS estimatedenddate 
FROM recording 
+0

Damn! Das ist schneller und einfacher als andere Lösungen, die ich versuchte! VIELEN DANK! – Oink

0
select ((timestamp_coloum_name - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)) from any_table; 
Verwandte Themen