Вопрос

Наверное, классика...Знаете ли вы простой способ получить значение SYSDATE в формате UTC в Oracle (лучше всего было бы заставить что-то работать и в 8-й версии).

На данный момент у меня есть пользовательская функция :(

Ваше здоровье,

Стефан

Это было полезно?

Решение

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

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;

Другие советы

select sys_extract_utc(systimestamp) from dual;

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

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

Следующее вернет текущую дату UTC как просто ДАТУ.

CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)

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

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

select systimestamp at time zone 'UTC' from dual

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

Я использую:

SELECT CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE) FROM DUAL;

У меня это работает нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top