използвайте timestamptz
той ще съхранява вашето времево клеймо в UTC. и ще го покаже на клиента според локала му.
https://www.postgresql.org/docs/current/static /datatype-datetime.html
актуализирано с друга добра точка от Lukasz , трябваше да спомена:
Ако не направите това, това ще доведе до дата „2017-12-31“ с час „23:01:01“ в друга часова зона всъщност ще бъде не само различно време, но и различна дата с различни ГОДИНА, МЕСЕЦ и ДЕН
друга актуализация Според Лоренц забележете, не забравяйте горния цитат на документитеВъведена стойност, която има изрично посочена часова зона, се преобразува в UTC, като се използва подходящото отместване за тази часова зона . Което означава, че трябва внимателно да управлявате датите за въвеждане. Напр.:
t=# create table t(t timestamptz);
CREATE TABLE
t=# set timezone to 'GMT+5';
SET
t=# insert into t select '2017-01-01 00:00:00';
INSERT 0 1
t=# insert into t select '2017-01-01 00:00:00' at time zone 'UTC';
INSERT 0 1
t=# insert into t select '2017-01-01 00:00:00+02';
INSERT 0 1
t=# select * from t;
t
------------------------
2017-01-01 00:00:00-05
2017-01-01 05:00:00-05
2016-12-31 17:00:00-05
(3 rows)