sql >> Databasteknik >  >> RDS >> PostgreSQL

Datum och tid i UTC - hur lagrar man dem i postgres?

använd timestamptz det kommer att lagra din tidsstämpel i UTC. och kommer att visa det för klienten enligt dess språk.

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

uppdaterad med en annan bra poäng från Lukasz , jag var tvungen att nämna:

Att inte göra det skulle leda till datum '2017-12-31' med tiden '23:01:01' i andra tidszoner skulle i själva verket inte bara vara en annan tid, utan ett annat datum med alla ÅR och MÅNAD och DAG olika

en annan uppdatering Enligt Laurenz notera, glöm inte ovanstående dokumentcitatEtt indatavärde som har en explicit tidszon specificerad konverteras till UTC med lämplig offset för den tidszonen . Vilket innebär att du måste hantera inmatningsdatumen noggrant. T.ex.:

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)



  1. Vad är skillnaden mellan MySQL och SQL?

  2. Händelseschemaläggare i PostgreSQL?

  3. Jämför prestanda för Windows Azure VM, del 2

  4. Connector/J MySQL-drivrutin i Jenkins Script Console / Scriptler