時間帯省略形は十分に標準化されていませんので、PostgreSQLでは、サーバで受付け可能な省略形群をカスタマイズできる仕組みを提供します。
timezone_abbreviations実行時パラメータは有効な省略形群を決定します。
このパラメータはすべてのデータベースユーザで変更可能ですが、取り得る値はデータベース管理者により制御されます。
これらは実際にはインストレーションディレクトリの.../share/timezonesets/
内の設定ファイル名です。
代替ファイルをこのディレクトリに追加することにより、管理者は時間帯省略形に対するローカルポリシーを設定することができます。
timezone_abbreviations
は、 .../share/timezonesets/
に存在する、名前のすべてがアルファベットである任意のファイルの名前を指定することができます。
(timezone_abbreviations
内の非アルファベット文字の禁止により、意図したディレクトリ以外のファイル読み取りを防ぐことができます。
また、バックアップファイルやその他のファイルの読み取りを防ぐこともできます。)
時間帯省略形ファイルには空白行や#
から始まるコメントを含めることができます。
コメント以外は以下の書式を持たなければなりません。
zone_abbreviation
offset
zone_abbreviation
offset
Dzone_abbreviation
time_zone_name
@INCLUDEfile_name
@OVERRIDE
zone_abbreviation
は単なる定義された省略形です。
offset
はUTCからの相当するオフセットを秒数で表したものです。
グリニッジより東にあれば正、西にあれば負の値となります。
たとえば、-18000はグリニッジより西に5時間、すなわち、北アメリカ東海岸の標準時間を示します。
D
は、時間帯名が標準時間ではなくローカル時間での夏時間を表すことを示します。
代わりにtime_zone_name
を指定することもでき、その場合には時間帯の定義が参照され、その時間帯での省略形の意味が使われます。
意味を調べるのは単に固定の整数値を使うよりかなり高価ですので、この代替法はその意味が歴史的に変わる省略形に対してのみ薦められます。
@INCLUDE
構文により、.../share/timezonesets/
ディレクトリ内の他のファイルを含有することができます。
深さに制限がありますが、入れ子に含有することができます。
@OVERRIDE
構文は、ファイル内の続く項目が既存の項目(典型的には、インクルードされたファイルから得られた項目)を上書きできることを示します。
これがないと、同一時間帯省略形の定義が競合した場合にエラーとみなされます。
未変更のインストレーションでは、Default
ファイルに、ほとんど全世界の競合しない時間帯省略形をすべて記載しています。
さらにAustralia
およびIndia
ファイルがこれらの地区向けに提供されています。
これらのファイルはDefault
ファイルの先頭で含有されています。
必要に応じて省略形の追加・変更を行ってください。
参考のため、標準のインストレーションにはAfrica.txt
、America.txt
なども含まれています。
これらにはIANA時間帯データベースに従って使用されている時間帯省略形に関する情報がすべて含まれています。
これらのファイル内にある時間帯定義を必要に応じてコピーペーストして独自の設定ファイルを編集することができます。
これらのファイル名にドットが入っていますので、timezone_abbreviations
設定から直接参照できないことに注意してください。
時間帯省略形を読み込む時にエラーが発生した場合、新しい値は適用されず、古い値がそのまま残ります。 データベースの起動時にエラーが起きた場合は、起動に失敗します。
設定ファイル内で定義される時間帯省略形は、PostgreSQLに組み込み済みの時間帯以外の意味も変更します。
たとえば、Australia
設定ファイルではSAT
(南オーストラリア標準時間)を定義しています。
このファイルが有効な場合、SAT
は土曜の省略形として認識されなくなります。
.../share/timezonesets/
を変更する時にバックアップを責任を持って行ってください。
このディレクトリは通常のデータベースダンプに含まれません。