Как выполнить конвертацию из Unix time (int, Epoch) в timestamp (DATE)?

Пытаюсь выполнить конвертацию из Unix time (int, Epoch).

Гугление с предложениями типа to_char(to_date... не помогает, "так как ожидается формат date".

Есть ли простые способы справиться с задачей?

Ожидаю YYYY-MM-DD HH24:MI:SS из 1610534373 с типом данных number.


Ответы (1 шт):

Автор решения: 0xdb

Стандартной функции конвертирования нет. Реализуйте свою собственную, например:

with 
function epoch2dt (s int) return date is
begin 
    return date'1970-01-01'+(1/24/60/60)*s;
end;
function epoch2ts(s int) return timestamp is
begin 
    return timestamp'1970-01-01 00:00:00'+numtodsinterval (s, 'second'); 
end;
select epoch2dt (1610534373) dt, epoch2ts (1610534373) ts
from dual;
/

DT                  TS                           
------------------- -----------------------------
2021-01-13 10:39:33 2021-01-13 10:39:33,000000000
→ Ссылка