Файлы конфигурации даты/времени
Эта страница переведена при помощи нейросети GigaChat.
Поскольку аббревиатуры часовых поясов не стандартизированы должным образом, PostgreSQL предоставляет средства для настройки набора аббревиатур, принимаемых сервером. Параметр выполнения timezone_abbreviations определяет активный набор аббревиатур. Хотя этот параметр может быть изменен любым пользователем базы данных, возможные значения для него находятся под контролем администратора базы данных - фактически это имена файлов конфигурации, хранящихся в .../share/timezonesets/
каталога установки. Добавляя или изменяя файлы в этом каталоге, администратор может установить локальную политику для аббревиатур часовых поясов.
timezone_abbreviations
можно установить на любое имя файла, найденное в .../share/timezonesets/
, если имя файла состоит только из букв. Запрет на использование неалфавитных символов в timezone_abbreviations
предотвращает чтение файлов вне целевого каталога, а также чтение резервных копий редактора и других посторонних файлов.
Файл аббревиатур часовых поясов может содержать пустые строки и комментарии, начинающиеся с #
. Строки без комментариев должны иметь один из следующих форматов:
zone_abbreviation offset
zone_abbreviation offset D
zone_abbreviation time_zone_name
@INCLUDE file_name
@OVERRIDE
zone_abbreviation
- это просто аббревиатура, которая определяется. offset
- это целое число, указывающее эквивалентный сдвиг в секундах от UTC, положительное значение указывает восток от Гринвича, а отрицательное - запад. Например, -18000 будет означать пять часов к западу от Гринвича или стандартное время североамериканского восточного побережья. D
указывает на то, что имя зоны представляет местное летнее время, а не стандартное время.
В качестве альтернативы можно указать time_zone_name
, ссылаясь на имя зоны, определенное в базе данных часовых поясов IANA. Проверяется определение зоны, чтобы увидеть, используется ли аббревиатура в этой зоне или использовалось ранее, и если да, то используется соответствующее значение - то есть значение, которое было актуально во время определения значения метки времени, или значение, использовавшееся непосредственно перед этим, если оно не было актуальным в этот момент, или самое старое значение, если оно использовалось только после этого времени. Такое поведение необходимо для работы с аббревиатурами, смысл которых исторически менялся. Также допускается определять аббревиатуру через имя зоны, в которой это аббревиатура не появляется, использование аббревиатуры эквивалентно записи имени зоны.
Использование простого целого числа offset
предпочтительнее при определении аббревиатуры, смещение от UTC которой никогда не менялось, поскольку такие аббревиатуры гораздо дешевле обрабатывать, чем те, которые требуют консультации с определением часового пояса.
Синтаксис @INCLUDE
позволяет включать другой файл в каталоге .../share/timezonesets/
. Включение может быть вложенным, до ограниченной глубины.
Синтаксис @OVERRIDE
указывает на то, что последующие записи в файле могут переопределять предыдущие записи (обычно это записи, полученные из включенных файлов). Без этого конфликтующие определения одной и той же аббревиатуры часового пояса считаются ошибкой.
В установке без изменений файл Default
содержит все непересекающиеся аббревиатуры часовых поясов для большей части мира. Дополнительные файлы Australia
и India
предоставляются для этих регионов: эти файлы сначала включают файл Default
, а затем добавляют или изменяют аббревиатуры по мере необходимости.
Для справочных целей стандартная установка также содержит файлы Africa.txt
, America.txt
, и т.д., содержащие информацию о каждой аббревиатуре часового пояса, известном как используемое согласно базе данных часовых поясов IANA. Определения имен зон, найденные в этих файлах, могут быть скопированы и вставлены в пользовательский файл конфигурации по мере необходимости. Обратите внимание, что эти файлы не могут быть непосредственно указаны в качестве настроек timezone_abbreviations
, из-за точки, встроенной в их имена.
Если при чтении набора аббревиатур часовых поясов возникает ошибка, новое значение не применяется, а сохраняется старый набор. Если ошибка происходит во время запуска базы данных, запуск терпит неудачу.
Аббревиатуры часовых поясов, определенные в файле конфигурации, заменяют значения, не относящиеся к часовому поясу, встроенные в PostgreSQL. Например, файл конфигурации определяет Australia
(для стандартного времени Южной Австралии). Когда этот файл активен, SAT
не будет распознаваться как аббревиатура для субботы.
Если изменить файлы в .../share/timezonesets/
, то придется делать резервные копии самостоятельно - обычная выгрузка базы данных не будет включать этот каталог.