Oracle current_timestamp в секундах преобразования - PullRequest
9 голосов
/ 04 мая 2011

Мы используем базу данных Oracle.

В нашей таблице отметка времени хранится в секундах с 1970 года, как я могу преобразовать отметку времени, полученную с помощью функции current_timestamp (), в секунды

Ответы [ 4 ]

22 голосов
/ 04 мая 2011

Это будет сделано:

select (cast(current_timestamp as date) - date '1970-01-01')*24*60*60 from dual

Хотя я бы не использовал current_timestamp, если бы меня интересовали только секунды, я бы использовал SYSDATE:

select (SYSDATE - date '1970-01-01')*24*60*60 from dual
0 голосов
/ 18 декабря 2018

Мне нужно было отправить метку времени в GrayLog через GELF из базы данных Oracle. Я пробовал разные версии и решения, но правильно работала только одна.

SQL:

SELECT REPLACE((CAST(dat AS DATE) - TO_DATE('19700101', 'YYYYMMDD')) * 86400 + MOD(EXTRACT(SECOND FROM dat), 1), ',', '.') AS millis
FROM (SELECT SYSTIMESTAMP AT TIME ZONE 'GMT' AS dat FROM dual)

Результат для Systmiestamp

2018/12/18 19: 47: 29,080988 +02: 00

будет

1545155249.080988
0 голосов
/ 22 апреля 2014

Возможно не совсем актуально. Мне пришлось решить другую проблему (например, Oracle хранит временную метку в V $ RMAN_STATUS и V $ RMAN_OUTPUT), и мне пришлось преобразовать ее в дату / время. Я был удивлен, но волшебная дата там не 1970-01-01, а 1987-07-07. Я посмотрел на историю Oracle, и ближайшая дата, о которой я могу вспомнить, это когда они перенесли продукты Oracle в UNIX. Это правильно?

Вот мой SQL

SELECT /*+ rule */
         to_char(min(stamp)/(24*60*60) + date '1987-07-07', 'DD-MON-YYYY HH24:MI:SS') start_tm
       , to_char(to_char(max(stamp)/(24*60*60) + date '1987-07-07', 'DD-MON HH24:MI:SS')) end_tm
FROM V$RMAN_STATUS 
START WITH (RECID, STAMP) =
     (SELECT MAX(session_recid),MAX(session_stamp) FROM V$RMAN_OUTPUT) 
CONNECT BY PRIOR RECID = parent_recid ;
0 голосов
/ 07 мая 2012

Не очень мило решение , но, возможно, с некоторыми преимуществами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...