ct
という名前の列があると思います タイプはTIMESTAMPTZ
テーブル内t
。次に、以下を使用できます:
SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
タイムゾーンのオフセットを秒単位で取得します。それはあなたに3600
を与えます UTC
から / GMT
つまり、GMT+1
のいずれかを意味します 、CET
または何でも。返される値は、TIMEZONE
によって異なります。 設定。
サンプル(私はドイツに住んでいます。実際のタイムゾーンはGMT+1
です。 / CET
):
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
timestamptz
------------------------
2008-01-01 18:00:00+01
test=# set timezone to 'gmt';
SET
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
timestamptz
------------------------
2008-01-01 17:00:00+00
ご覧のとおり、設定されたタイムゾーンで常に何でも出力します。したがって、EXTRACT(TIMEZONE FROM ...)
で取得するオフセット TIMEZONE
によって異なります 設定。 INSERT
で指定されたタイムゾーン 救われる価値がないので、失われます。重要なのは、すべてが正しく、TIMEZONE
に依存してはならないということです。 設定。 PostgreSQLはそれを非常にうまく行っています。