Мне кажется, эти твои даты Javascript в стиле. То есть, похоже, что это времена с UNIX эпохи 1970-01-01 00:00:00 UTC
, измеренные в миллисекундах. Обратите внимание, что они относятся к UT C, а не к вашему местному часовому поясу. Ваш часовой пояс Asia/Dhaka
? Это на шесть часов больше UT C.
Мне также кажется, что ваши метки времени имеют десятисекундную точность. Показанные вами два делятся на 10 000.
Это формула для преобразования Javascript раз в Oracle UT C значения даты / времени
SELECT TO_DATE('19700101','yyyymmdd') + (1587909960000/86400000) FROM DUAL;
Это дает SYSDATE - стиль рендеринга ваших значений в UT C время, а не местное время . Это дает 2020-04-26 14:06:00
Поскольку у вас есть явная ошибка в шесть часов, я думаю, ваш местный часовой пояс составляет Asia/Dhaka
, UTC + 6. Но это также может быть America/Denver
, UT C -6.
и ваше значение времени, пройденное по этой формуле, даст 2020-04-26 14:06:00
. Что похоже на действительную недавнюю дату / время.
Это Угадай! Если вы работаете с деньгами других людей или проживаете в своей базе данных, спросите человека, который его запрограммировал. Это не родной для СУБД способ ведения дел, поэтому вам следует еще раз проверить.
Что происходит в формуле?
В Oracle, добавив 1.0
к значение стиля SYSDATE добавляет один календарный день к нему. Итак, мы начинаем с Oracle даты для UNIX эпохи TO_DATE('19700101','yyyymmdd')
.
Затем мы берем ваше значение метки времени в миллисекундах и преобразуем его в дни, деля на 86 400 000. Наконец, мы добавляем его к дата эпохи.
Вот несколько советов о том, как получить текущее время в UT C, чтобы вы могли сравнить его со своими отметками времени. Как получить значение UT C для SYSDATE на Oracle