2014-10-30 5 views
0

Как преобразовать функцию CURRENT_TIMESTAMP в НОМЕР с помощью ORACLE?Временная метка для номера

Используя следующий код, я смог извлечь CURRENT_TIMESTAMP системы

SELECT SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) FROM DUAL; 

То, что я хочу, чтобы использовать результат приведенного выше кода, чтобы создать соответствующую временную метку в формате Unix. Pratic: 1) с SELECT SYS_EXTRACT_UTC (CURRENT_TIMESTAMP) FROM DUAL; я получил этот результат:

-------------------------------------------------- 
| SYS_EXTRACT_UTC(CURRENT_TIMESTAMP)   | 
-------------------------------------------------- 
|  30-OTT-14 09:51:43,164232000    | 
-------------------------------------------------- 

2) И я хочу, чтобы преобразовать его в:

-------------------------------------------------- 
|    UNIXTIMESTAMP     | 
-------------------------------------------------- 
|     1414662703      | 
-------------------------------------------------- 

Возможно ли это? Спасибо всем заранее

+2

Вы видели это? http://stackoverflow.com/questions/12105691/convert-timestamp-datatype-into-unix-timestamp-oracle – Dmitry

+0

Благодарим вас за ссылку: D – corvallo

ответ

3

, если вам нужно работать с временными метками, чем вы можете попробовать это

select trunc(
     extract(day from intvl) * 24 * 60 * 60 
     + extract(hour from intvl) * 60 * 60 
     + extract(minute from intvl) * 60 
     + extract(second from intvl) 
     ) 
from 
(select SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) - to_timestamp('19700101', 'YYYYMMDD') intvl from dual); 

Разница между двумя отметками является интервал

ЭКСТРАКТ (FMT FROM ИНТЕРВАЛ) извлекает время даты компонент от INTERVAL

TRUNC усекает миллисекунды

+0

Из своего примера, где значение 'unixtimestamp' не имеет десятичных знаков, он по-видимому, не нужно работать с точностью временных меток. В стороне, ваше решение, конечно, правильно и приятно. – nop77svk

+0

@ nop77svk Да, это правда. Достаточно использовать даты, но не current_date, потому что эта дата находится в часовом поясе сессии. Насколько я понимаю, OP требует времени UTC. – Multisync

+0

@ nop77svk CAST (SYS_EXTRACT_UTC (CURRENT_TIMESTAMP) как DATE) вместо current_date будет точнее – Multisync

Смежные вопросы