Postgres 9.3 で現在のタイムゾーン名を取得するにはどうすればいいですか? 質問する

Postgres 9.3 で現在のタイムゾーン名を取得するにはどうすればいいですか? 質問する

現在のタイムゾーン名を取得したいです。私がすでに達成したのは、次の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」ではなく明示的な値に設定することになると思います。

おすすめ記事