ORA-01841, (полный) год должен быть между - PullRequest
0 голосов
/ 05 марта 2020

Я хочу преобразовать дату эпохи из таблицы в метку времени.

Но это приводит к ошибке при запуске в Oracle.

Но год, показанный в «Рабу, 22 апреля, 2465, Пукул, 15.35.06.289 по Гринвичу + 07: 00», когда я бегу по этой ссылке »https://www.epochconverter.com/ '

15630394456289509085900 это время эпохи из таблицы

select to_char(
           cast(
               to_date('01/01/1970 00:00:00','DD/MM/YYYY HH24:MI:SS')+15630394456289509085900/86400 
           as timestamp with local time zone)
         ,'YYYY-MM-DD HH24:MI:SS') 
from dual

1 Ответ

1 голос
/ 05 марта 2020

Время эпохи в часовом поясе UT C. Просто используйте литерал TIMESTAMP и добавьте правильное количество секунд:

SELECT TIMESTAMP '1970-01-01 00:00:00 UTC'
         + NUMTODSINTERVAL(15630394456289509085900 / 86400e12, 'DAY') AS epoch_time_12,
       TIMESTAMP '1970-01-01 00:00:00 UTC'
         + NUMTODSINTERVAL(15630394456289509085900 / 86400e13, 'DAY') AS epoch_time_13
FROM   DUAL

Какие выходные данные:

EPOCH_TIME_12                     | EPOCH_TIME_13                    
:-------------------------------- | :--------------------------------
2465-04-22 08:14:16.289509086 UTC | 2019-07-13 17:37:25.628950909 UTC

db <> fiddle здесь

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