sql >> Database teknologi >  >> RDS >> PostgreSQL

Dato og tid i UTC - hvordan gemmer man dem i postgres?

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)



  1. Sidste ord i en sætning:I SQL (regulære udtryk muligt?)

  2. Sådan finder du, hvor funktionen bruges

  3. SQL - hvordan man tæller unik kombination af kolonner

  4. Sådan opdaterer du flere kolonner i mysql ved hjælp af php