Вероятно, классический... Вы знаете легкий трюк для получения значения UTC SYSDATE в Oracle (лучше всего было бы получить что-то, работающее и на 8-й версии).
Теперь у меня есть пользовательская функция: (
Приветствия,
Стефан
Ответ 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: