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

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

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

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

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

  1.  
  2. SELECT (cast(current_timestamp #b1b100;">as date) - to_date('01-01-1970','DD-MM-YYYY')) * (#cc66cc;">86400) * #cc66cc;">1000 + (To_Char(current_timestamp, 'FF')/#cc66cc;">1000)
  3. FROM dual;
  4.  

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

  1.  
  2. SELECT (sysdate - to_date('01-JAN-1970','DD-MON-YYYY')) * (#cc66cc;">86400) #b1b100;">AS dt
  3. FROM dual;
  4.  

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

Источники
http://it.nittis.ru/oracle-date.html http://qaru.site/questions/781244/convert-timestamp-datatype-into-unix-timestamp-oracle
14:43
34.17K
0
N 4 года назад #
Во втором запросе вернет не целое значение, а дробное
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.