gunakan timestamptz
itu akan menyimpan cap waktu Anda di UTC. dan akan menampilkannya ke klien sesuai dengan lokalnya.
https://www.postgresql.org/docs/current/static /datatype-datetime.html
diperbarui dengan poin bagus lainnya dari Lukasz , saya harus menyebutkan:
Tidak melakukan itu akan menyebabkan tanggal '2017-12-31' dengan waktu '23:01:01' akan di zona waktu lain sebenarnya bukan hanya waktu yang berbeda, tetapi tanggal yang berbeda dengan semua TAHUN dan BULAN dan HARI yang berbeda
pembaruan lain Sesuai Laurenz perhatikan, jangan lupa kutipan dokumen di atasNilai input yang memiliki zona waktu eksplisit yang ditentukan dikonversi ke UTC menggunakan offset yang sesuai untuk zona waktu tersebut . Yang berarti Anda harus mengatur tanggal input dengan hati-hati. Misal:
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)