PLSQL - преобразовать метку времени Unix с точностью до миллисекунды в метку времени (6) - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть Unix Timstamp с точностью до миллисекунды, как показано ниже:

1523572200000

Мне нужно преобразовать его в метку времени (6). Это формат мне нужен:

05-NOV-14 09.45.00.000000000 AM

(Приведенные выше примеры Fyi не совпадают с датами, только в качестве примера.)

Какой лучший способ сделать это?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Для вас может работать следующее (где myunixtimestamp - имя столбца, в котором хранятся ваши метки времени Unix):

SELECT TIMESTAMP'1970-01-01 00:00:00.000' + NUMTODSINTERVAL(myunixtimestamp/1000, 'SECOND')
  FROM mytable;

Например,

SELECT TIMESTAMP'1970-01-01 00:00:00.000' + NUMTODSINTERVAL(1523572200000/1000, 'SECOND')
  FROM dual;

дает результат 2018-04-12 10:30:00.000000000 PM.

Надеюсь, это поможет.

0 голосов
/ 30 апреля 2018

Предполагая, что текущая метка времени: 1523572200000, попробуйте следующее:

select cast (to_date('1970-01-01', 'YYYY-MM-DD') + 1523572200000/1000/60/60/24 as timestamp) from dual;

где:

  • to_date('1970-01-01', 'YYYY-MM-DD') время эпохи
  • <unix_timestamp>/60/60/24 было разделено на 1000 миллисекунд 60 секунд и 60 минут и 24 часа, потому что в оракуле мы добавляем дней
...