Ik neem aan dat je een kolom hebt met de naam ct
met het type TIMESTAMPTZ
in de tabel t
. Dan kunt u het volgende gebruiken:
SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
om de offset van de tijdzone in seconden te krijgen. Het geeft je 3600
van UTC
/GMT
dat betekent ofwel GMT+1
, CET
of wat dan ook. De geretourneerde waarde is afhankelijk van uw TIMEZONE
instelling.
Voorbeeld (ik woon in Duitsland, werkelijke tijdzone is 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
Zoals u kunt zien, voert het altijd iets uit in de geconfigureerde tijdzone. Dus de offset die je krijgt met EXTRACT(TIMEZONE FROM ...)
hangt af van uw TIMEZONE
instelling. De tijdzone die werd gegeven op INSERT
is verloren, omdat het niet de moeite waard is om gered te worden. Het ding dat telt is dat alles correct is en dat mag niet afhangen van de TIMEZONE
instelling. PostgreSQL doet dat heel goed.