Преобразование эпохи на сегодняшний день в 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)
Здесь одна строка для этой таблицы:
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
Я уверен, что это было задано так много раз, но все решения, которые я нашел до сих пор, действительно не работали, поэтому... Как преобразовать ESTIMATEDENDTIME
из его первоначальной формы в формат DD/MM/YYY HH:MI:SS
в одном запросе в SQLPLUS?
Спасибо!
Ответы
Ответ 1
В Oracle добавление X к DATE вернет вам DATE X дней спустя.
Если значение ESTIMATEDENDTIME равно миллисекундам с момента создания Epoch, вы можете сделать
DATE '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * ESTIMATEDENDTIME
а затем используйте to_char для достижения правильного формата итоговой даты. например:
SELECT
captureid
, startdate
, enddate
, state
, estimatedendtime
, DATE '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * estimatedendtime AS estimatedenddate
FROM recording
Ответ 2
select ((timestamp_coloum_name - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)) from any_table;