Oracle. Преобразование даты в unix timestamp

В Оракле введено немало новшеств, некоторые из них полезны, некоторые не очень, а иные просто поражают своей реализацией. Ктобы мог подумать, что timestamp в Oracle не имеет ничего общего с количеством секунд (миллисекунд) с 1 января 1970 года.

Да и функции преобразования обнаружить не удалось, а потому пришлось обратиться в всемирному разуму, который на нашей планете представлен поисковой системой Google.

Вот результаты изысканий.

Преобразование Oracle timestamp в unix timestamp

SELECT (cast(current_timestamp as date) - to_date('01-01-1970','DD-MM-YYYY')) * (86400) * 1000  + (To_Char(current_timestamp, 'FF')/1000) 
  FROM dual;

Преобразование даты в unix timestamp

SELECT (sysdate - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400) AS dt 
  FROM dual;

В первом запросе возвращается количество миллисекуна, а во втором — секунд.

14:43
721
N
09:04
Во втором запросе вернет не целое значение, а дробное
Загрузка...