Ich nehme an, Sie haben eine Spalte namens ct
die den Typ TIMESTAMPTZ
hat in der Tabelle t
. Dann können Sie verwenden:
SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
um den Offset der Zeitzone in Sekunden zu erhalten. Das ergibt 3600
von UTC
/GMT
das bedeutet entweder GMT+1
, CET
oder Wasauchimmer. Der zurückgegebene Wert hängt von Ihrer TIMEZONE
ab Einstellung.
Beispiel (Ich lebe in Deutschland, aktuelle Zeitzone ist 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
Wie Sie sehen können, gibt es immer alles in der konfigurierten Zeitzone aus. Den Offset erhalten Sie also mit EXTRACT(TIMEZONE FROM ...)
hängt von Ihrer TIMEZONE
ab Einstellung. Die Zeitzone, die bei INSERT
angegeben wurde ist verloren, weil es nicht wert ist, gerettet zu werden. Wichtig ist, dass alles stimmt und das sollte nicht von der TIMEZONE
abhängen Einstellung. PostgreSQL macht das sehr gut.