Oracle PL / SQL Как получить время в Париже? - PullRequest
0 голосов
/ 07 января 2020

Каков наилучший способ всегда получить правильное время в Европе / Париже (включая летнее / зимнее время)?

Пока что я использую следующий запрос:

select FROM_TZ(CAST(Sysdate AS TIMESTAMP), 'Europe/Paris') from dual

Хорошо работало на предыдущем сервере. Однако мы изменили наш сервер базы данных, и теперь мы получаем разницу в один час.

Можно ли как-то всегда узнать точное время в Париже?

Спасибо.

1 Ответ

2 голосов
/ 07 января 2020

SYSDATE возвращается в часовом поясе операционной системы сервера базы данных. Когда вы запускаете FROM_TZ(CAST(Sysdate AS TIMESTAMP), 'Europe/Paris'), тогда вы «присоединяете» часовой пояс Europe/Paris к SYSDATE.

Таким образом, FROM_TZ(CAST(Sysdate AS TIMESTAMP), 'Europe/Paris') является правильным, только если часовой пояс операционной системы сервера базы данных равен Europe/Paris.

Попробуйте SYSTIMESTAMP AT TIME ZONE 'Europe/Paris', тогда результат всегда будет правильным, потому что SYSTIMESTAMP возвращает значение TIMESTAMP WITH TIME ZONE, а часовые пояса правильно конвертируются.

...