Я не был уверен, в каком формате был ваш номер 1579730473525, поэтому я сделал предположение и взял первые 10 цифр, используя SUBSTR
, и в результате была получена приемлемая дата 2020 года:
SELECT TO_DATE('1970-01-01','YYYY-MM-DD') +
NUMTODSINTERVAL(TO_NUMBER(SUBSTR('1579730473525',1,10)), 'SECOND') FROM dual;
возвращает
22/01/2020 22:01:13
Затем, чтобы получить TIMESTAMP
, я добавил последние 4 цифры.
SELECT to_char(TO_DATE('1970-01-01','YYYY-MM-DD') +
NUMTODSINTERVAL(TO_NUMBER(SUBSTR('1579730473525',1,10)), 'SECOND') ,'YYYY-MM-DD hh:mm:ss') ||'.'||SUBSTR('1579730473525',10,4)
FROM dual;
, и это возвращает:
2020-01-22 10:01:13.3525
(Я не смог найти способ прямого преобразования числа 14 di git обратно в формат ГГГГ-ММ-ДД чч: мм: сс: ff; он жаловался на точность)
Затем, чтобы получить число в формате TIMESTAMP
:
SELECT TO_TIMESTAMP(TO_CHAR(TO_DATE('1970-01-01','YYYY-MM-DD') +
NUMTODSINTERVAL(TO_NUMBER(SUBSTR('1579730473525',1,10)), 'SECOND') ,'YYYY-MM-DD hh:mi:ss') ||'.'||SUBSTR('1579730473525',10,4),'YYYY-MM-DD hh:mi:ss:ff')
FROM dual;
, и это возвращает его в Oracle TIMESTAMP
в соответствии с запросом, используя Oracle SQL.
Просто подсказка: если если вы откажетесь от форматирования, запишите параметр NLS NLS_TIMESTAMP_FORMAT на случай, если возникнут проблемы с форматированием.