Перейти к основному содержимому

Файлы конфигурации даты/времени

примечание

Эта страница переведена при помощи нейросети 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/, то придется делать резервные копии самостоятельно - обычная выгрузка базы данных не будет включать этот каталог.