#oracle #timezone #timezone-offset
#Oracle #Часовой пояс #смещение часового пояса
Вопрос:
Может ли oracle DB возвращать регион часового пояса, например, Европа / Лондон, а не только смещение? Я хотел бы знать название региона, в котором находится сервер.
ВЫБЕРИТЕ параметр SYSTIMESTAMP ИЗ DUAL; возвращает дату, время и смещение:
2020-08-17 18:11:03.219138 -05:00
ВЫБЕРИТЕ DBTIMEZONE ИЗ dual; возвращает смещение:
-05:00
Ответ №1:
Oracle получает от ОС только смещение часового пояса, поэтому он не может сказать, какой регион установлен в ОС, потому что существует множество регионов часового пояса с одинаковым смещением (-05:00). Но вы можете выполнять команды ОС изнутри Oracle: tzutil /g
в Windows или timedatectl
в Linux (или просто читать /etc/timezone
), чтобы получить расширенную информацию.
Обновление: например, вы можете использовать мой пакет xt_shell для запуска команд ОС с таймаутом и расширенным STDERR.
https://github.com/xtender/xt_shell
select * from table(xt_shell.shell_exec('/usr/bin/timedatectl',1000));
Результат:
SQL> select * from table(xt_shell.shell_exec('/usr/bin/timedatectl',1000));
COLUMN_VALUE
---------------------------------------------------
Local time: Tue 2020-08-18 11:25:06 UTC
Universal time: Tue 2020-08-18 11:25:06 UTC
RTC time: Tue 2020-08-18 11:25:06
Time zone: Europe/Berlin (UTC, 0000)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
Комментарии:
1. @Theman пожалуйста, посмотрите на обновленный ответ. Я добавил пример с моим пакетом xt_shell