sql >> Databáze >  >> RDS >> PostgreSQL

Datum a čas v UTC – jak je uložit do postgresu?

použijte timestamptz uloží vaše časové razítko v UTC. a zobrazí jej klientovi podle jeho národního prostředí.

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

aktualizováno s dalším dobrým bodem od Lukasze , musel jsem zmínit:

Pokud to neuděláte, vedlo by to k datu '2017-12-31' s časem '23:01:01' ve skutečnosti by v jiném časovém pásmu byl nejen jiný čas, ale i jiné datum s různými ROKEM, MĚSÍCEM a DNEM

další aktualizace Podle Laurenze všimněte si, nezapomeňte na výše uvedenou citaci v dokumentechVstupní hodnota, která má explicitně specifikované časové pásmo, je převedena na UTC pomocí příslušného posunu pro toto časové pásmo . To znamená, že musíte pečlivě spravovat vstupní data. Např.:

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. Typy SQL příkazů

  2. Je možné provést SQL injection (HIGH Level) v Sakra zranitelné webové aplikaci?

  3. MariaDB JSON_TABLE() Vysvětleno

  4. Jak programově vytvářet databáze MySQL na sdílených plánech hostování Linuxu