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