現在のタイムゾーン名を取得したいです。私がすでに達成したのは、次のutc_offset
方法でタイムゾーンの略語を取得することです。
SELECT * FROM pg_timezone_names WHERE abbrev = current_setting('TIMEZONE')
これにより、このタイムゾーンのすべての大陸 / 首都の組み合わせが取得されますが、正確な組み合わせは取得されませんtimezone
。たとえば、次のようになります。
Europe/Amsterdam
Europe/Berlin
サーバーは存在しておりBerlin
、サーバーのタイムゾーン名を取得したいと考えています。
私が抱えている問題はCET
、それが常に でありUTC+01:00
、 を考慮していないことですDST iirc
。
ベストアンサー1
最も一般的なケースでは、PostgreSQL だけを使用してこれが可能だとは思いません。PostgreSQL をインストールするときに、タイムゾーンを選択します。デフォルトでは、オペレーティング システムのタイムゾーンが使用されるはずです。これは通常、postgresql.conf のパラメータ「timezone」の値として反映されます。ただし、値は「localtime」になります。この設定は、SQL ステートメントで確認できます。
show timezone;
しかし、postgresql.confのタイムゾーンを「Europe/Berlin」などに変更するとshow timezone;
、それ「localtime」の代わりに値を使用します。
したがって、解決策としては、postgresql.conf の「timezone」をデフォルトの「localtime」ではなく明示的な値に設定することになると思います。