Mam kolumnę typu TIMESTAMP WITHOUT TIME ZONE
i chciałbym mieć tę domyślną wartość bieżącego czasu w UTC. Pierwsze aktualny czas UTC jest proste:Użycie bieżącego czasu w UTC jako wartości domyślnej w PostgreSQL
postgres=# select now() at time zone 'utc';
timezone
----------------------------
2013-05-17 12:52:51.337466
(1 row)
Jak użyciu bieżącego znacznika czasu dla kolumny:
postgres=# create temporary table test(id int, ts timestamp without time zone default current_timestamp);
CREATE TABLE
postgres=# insert into test values (1) returning ts;
ts
----------------------------
2013-05-17 14:54:33.072725
(1 row)
Ale który używa czasu lokalnego. Próbując wymusić, że do wyników UTC w błąd składni:
postgres=# create temporary table test(id int, ts timestamp without time zone default now() at time zone 'utc');
ERROR: syntax error at or near "at"
LINE 1: ...int, ts timestamp without time zone default now() at time zo...
widzę funciton jak now_utc() naprawdę błyszczy podczas pisania zapytań – misaxi
To działa nawet gdy czas wraca godzinę - teraz() zwraca znacznik czasu, który zna przesunięcie z UTC. –