Подтвердить что ты не робот

Как получить значение UTC для SYSDATE в Oracle

Вероятно, классический... Вы знаете легкий трюк для получения значения UTC SYSDATE в Oracle (лучше всего было бы получить что-то, работающее и на 8-й версии).

Теперь у меня есть пользовательская функция: (

Приветствия,

Стефан

4b9b3361

Ответ 1

Вы можете использовать

SELECT SYS_EXTRACT_UTC(TIMESTAMP '2000-03-28 11:30:00.00 -02:00') FROM DUAL;

Вам также может потребоваться изменить часовой пояс

ALTER SESSION SET TIME_ZONE = 'Europe/Berlin';

Или прочитайте его

SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM dual;

Ответ 2

select sys_extract_utc(systimestamp) from dual;

Однако не будет работать на Oracle 8.

Ответ 3

Обычно я работаю с столбцами DATE, а не с большим, но точным TIMESTAMP.

Следующее вернет текущую дату UTC, как только это - DATE.

CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)

Работа с датами UTC велик, потому что мне не нужно беспокоиться о сложности часовых поясов. Только окончательный дисплей пользователю требует смещения или других проблем.

Ответ 4

Если вам нужна метка времени, а не только дата с sysdate, вы можете указать часовой пояс с помощью systimestamp:

select systimestamp at time zone 'UTC' from dual

выходы: 29-AUG-17 06.51.14.781998000 PM UTC