2010-09-29 9 views
12

devrin dönüştürme Aşağıdaki tabloda vardır:/SQLplus bugüne kadar Oracle

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 

Bu yüzden istendi eminim: Burada

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

bu tablo için tek bir çizgi var Daha önce birçok kez, ama şimdiye kadar bulduğum tüm çözümler gerçekten işe yaramadı, bu yüzden ... ESTIMATEDENDTIME'u orijinal epoch formundan SQLPLUS'taki tek bir sorguda DD/MM/YYY HH:MI:SS biçimine nasıl dönüştürebilirim?

Teşekkürler!

cevap

25

Oracle'da, bir DATE'ye X eklediğinizde, X gün sonra bir DATE dönecektir.

ESTIMATEDENDTIME sonra

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

yapacak ve ardından ortaya çıkan tarihi doğru biçimde elde etmek to_char kullanabilirsiniz Epoch'tan beri milisaniye ise. örneğin:

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

Lanet! Bu, denediğim diğer çözümlerden daha hızlı ve kolay! TEŞEKKÜRLER! – Oink

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