2010-09-29 51 views
12

我有如下表:轉換時代至今在sqlplus /甲骨文

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

下面是這個表中的一行:

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 

我敢肯定,這已經被問這樣很多次之前,但迄今爲止我發現的所有解決方案都沒有真正起作用,所以...在SQLPLUS的單個查詢中,如何將ESTIMATEDENDTIME從其原始時期格式轉換爲DD/MM/YYY HH:MI:SS格式?

謝謝!

回答

25

在Oracle中,將X添加到DATE將在X天后返回DATE。

如果ESTIMATEDENDTIME是毫秒,自紀元那麼你可以做

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

,然後使用TO_CHAR來實現結果日期的正確格式。 e.g:

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

該死!這比我嘗試的其他解決方案更快更簡單!謝謝! – Oink 2010-09-29 09:28:25

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