Предполагам, че имате колона с име 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 прави това много добре.