brug timestamptz
det gemmer dit tidsstempel i UTC. og vil vise det til klienten i henhold til dens lokalitet.
https://www.postgresql.org/docs/current/static /datatype-datetime.html
opdateret med endnu en god pointe fra Lukasz , jeg var nødt til at nævne:
Hvis du ikke gør det, ville det føre til datoen '2017-12-31' med tiden '23:01:01' i andre tidszoner ville i virkeligheden ikke kun være et andet tidspunkt, men en anden dato med alle ÅR og MÅNED og DAG forskellige
endnu en opdatering Ifølge Laurenz bemærk, glem ikke ovenstående dokumentcitatEn inputværdi, der har en eksplicit tidszone angivet, konverteres til UTC ved hjælp af den passende offset for den tidszone . Hvilket betyder, at du skal administrere inputdatoer omhyggeligt. F.eks.:
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)