PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Datum und Uhrzeit in UTC - wie werden sie in Postgres gespeichert?

Verwenden Sie timestamptz Es speichert Ihren Zeitstempel in UTC. und zeigt es dem Client entsprechend seiner Locale an.

https://www.postgresql.org/docs/current/static /datatype-datetime.html

aktualisiert mit einem weiteren guten Punkt von Lukasz , musste ich erwähnen:

Wenn Sie dies nicht tun, würde das Datum '2017-12-31' mit der Zeit '23:01:01' in einer anderen Zeitzone tatsächlich nicht nur eine andere Zeit sein, sondern ein anderes Datum, bei dem alle JAHRE und MONATE und TAGE unterschiedlich sind

ein weiteres Update Laut Laurenz Beachten Sie, vergessen Sie nicht das Zitat aus der obigen DokumentationEin Eingabewert, für den eine explizite Zeitzone angegeben ist, wird unter Verwendung des entsprechenden Offsets für diese Zeitzone in UTC konvertiert . Das bedeutet, dass Sie die Eingabedaten sorgfältig verwalten müssen. Beispiel:

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)