私の Web アプリは、タイム ゾーンなしですべてのタイムスタンプを UTC で保存します。最近のログインのリストを返すシェル/psql スクリプトがあり、そのスクリプトでサーバーのローカル タイム ゾーン (サーバーの場所や夏時間によって異なる場合があります) でログイン時間を表示したいと考えています。
データベース サーバーのタイム ゾーンと UTC の差を表す間隔を取得するために、現在次のハックを使用しています。
SELECT age(now() at time zone 'UTC', now());
それはうまくいきますが、もっと簡単な方法はありますか?
有効なタイムゾーン文字列を返す「timezone」というサーバー構成パラメータがありますが、クエリでこれらのパラメータにアクセスすることはできないと思います。(これは別の質問だと思いますが、それに答えればタイムゾーンの問題が解決するでしょう。)
ベストアンサー1
SELECT current_setting('TIMEZONE')
これはクエリで使用できますが、数値的な違いは得られません。
あなたの解決策は問題ありません。