Может ли oracle DB возвращать регион часового пояса, а не только смещение?

#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