sql >> Database >  >> RDS >> PostgreSQL

Datum en tijd in UTC - hoe sla je ze op in postgres?

gebruik timestamptz het slaat uw tijdstempel op in UTC. en zal het aan de klant tonen volgens de landinstelling.

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

bijgewerkt met nog een goed punt van Lukasz , ik moest vermelden:

Als u dat niet doet, zou de datum '2017-12-31' met tijd '23:01:01' in een andere tijdzone niet alleen een andere tijd zijn, maar ook een andere datum met alle JAAR en MAAND en DAG anders

nog een update Volgens Laurenz let op, vergeet de bovenstaande documenten niet quoteEen invoerwaarde waarvoor een expliciete tijdzone is opgegeven, wordt geconverteerd naar UTC met behulp van de juiste offset voor die tijdzone . Dat betekent dat u de invoerdata zorgvuldig moet beheren. Bijv.:

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. Foutcode:1292. Afgekorte onjuiste DUBBELE waarde:'ja'

  2. Geen geheugen (toegewezen 50855936) (geprobeerd om 50331646 bytes toe te wijzen)

  3. Zoek de tabelnaam waarnaar wordt verwezen met behulp van tabel-, veld- en schemanaam

  4. Taakwachtrij als SQL-tabel met meerdere consumenten (PostgreSQL)