Saya menginstal PostgreSQL 9
dan waktu ditampilkan 1 jam di belakang waktu server.
Select NOW()
Pertunjukan lari :2011-07-12 11:51:50.453842+00
Tanggal server menunjukkan: Tue Jul 12 12:51:40 BST 2011
Ini terlambat 1 jam tetapi zona waktu yang ditunjukkan di phppgadmin
adalah:TimeZone Etc/GMT0
Saya telah mencoba masuk ke postgresql.conf
pengaturan dan
zona waktu = GMT
lalu jalankan restart tapi tidak ada perubahan.
Ada ide yang saya pikir itu hanya akan menggunakan zona waktu server tetapi jelas tidak ?!
SOLUSI!: Saya sudah mengatur GMT
sebelumnya dan itu satu jam di belakang. setelah mencari-cari ternyata saya perlu mengaturnya ke Europe/London
. Ini memperhitungkan +1 jam di waktu musim panas Inggris, GMT tidak!
sumber
SET TIME ZONE 'UTC';
. Lihat dok .Pilih
timezone
dari:Dan
set
seperti di bawah ini diberikan contoh:Gunakan nama DB Anda sebagai pengganti
postgres
dalam pernyataan di atas.sumber
SELECT pg_reload_conf();
:)SELECT pg_reload_conf()
kembali benar, tetapinow()
danselect current_setting('TIMEZONE')
terus kembali nilai-nilai untuk 'America / New_York'. Apakah karena saya bukan superuser?Untuk menyelesaikan perubahan zona waktu di Postgres 9.1 Anda harus:
1.- Cari di folder "zona waktu" di /usr/share/postgresql/9.1/ untuk file yang sesuai, dalam kasus saya adalah "America.txt", di dalamnya, cari lokasi terdekat dengan zona Anda dan salin huruf pertama di kolom kiri.
Misalnya: jika Anda berada di "New York" atau "Panama", artinya "EST":
2.- Hapus komentar pada baris "zona waktu" di
postgresql.conf
file Anda dan letakkan zona waktu Anda seperti yang ditunjukkan:3.- Mulai ulang Postgres
sumber
−05:00
sepanjang tahun sementara New York menggeser satu jam dengan Daylight Saving Time (DST). Zona waktu lebih dari sekedar offset; zona waktu mencakup seperangkat aturan dan anomali masa lalu, sekarang, dan masa depan seperti DST. Jadi, katakan apa yang Anda maksud:America/Panama
,America/New_York
,Europe/London
,UTC
(atauZulu
).SELECT * FROM pg_timezone_names
yang mungkin lebih aman untuk dilakukan, mengingat situs pihak ketiga belum tentu selalu diperbarui (atau kedaluwarsa) sebagai instance database khusus Anda sendiri.postgresql
select pg_reload_conf()
.The diterima jawaban oleh Muhammad Usamah benar.
Nama Parameter Konfigurasi
Jawaban itu menunjukkan cara mengatur parameter konfigurasi khusus Postgres dengan yang berikut:
… Di mana
timezone
bukan perintah SQL, itu adalah nama parameter konfigurasi.Lihat dokumen untuk ini .
Perintah SQL Standar
Atau, Anda dapat menggunakan perintah SQL didefinisikan oleh SQL spesifikasi:
SET TIME ZONE
. Dalam sintaks ini sepasang kataTIME ZONE
menggantikan "zona waktu" (perintah SQL aktual versus nama parameter), dan tidak ada "TO".Baik perintah ini dan perintah di atas memiliki efek yang sama, untuk menyetel nilai hanya untuk sesi saat ini. Untuk membuat perubahan menjadi permanen, lihat jawaban saudara ini .
Lihat dokumen untuk ini .
Nama Zona Waktu
Anda dapat menentukan nama zona waktu yang tepat . Sebagian besar adalah benua / wilayah.
…atau…
Hindari singkatan 3 atau 4 huruf seperti
EST
atauIST
karena tidak terstandardisasi atau tidak unik. Lihat Wikipedia untuk daftar nama zona waktu .Dapatkan zona saat ini
Untuk melihat zona waktu saat ini untuk sebuah sesi, coba salah satu pernyataan berikut. Secara teknis kami memanggil
SHOW
perintah untuk menampilkan parameter run-time.…atau…
sumber
SHOW
bagianSELECT current_setting('TIMEZONE')
Selain jawaban sebelumnya, jika Anda menggunakan alat pgAdmin III, Anda dapat mengatur zona waktu sebagai berikut:
sumber
Perhatikan banyak klien pihak ketiga memiliki pengaturan zona waktu sendiri yang tumpang tindih dengan server Postgres dan \ atau pengaturan sesi.
Misalnya, jika Anda menggunakan 'IntelliJ IDEA 2017.3' (atau DataGrips), Anda harus menentukan zona waktu sebagai:
'Properti sumber DB' -> tab 'Lanjutan' -> 'Opsi VM': -Duser.timezone = UTC + 06: 00
jika tidak, Anda akan melihat 'UTC' terlepas dari apa pun yang telah Anda atur di tempat lain.
sumber
Mungkin tidak terkait dengan pertanyaan, tetapi saya perlu menggunakan CST, mengatur zona waktu sistem ke tz yang diinginkan (Amerika / ...) dan kemudian di postgresql conf atur nilai zona waktu ke 'localtime' dan itu berfungsi sebagai pesona , current_time mencetak waktu yang tepat (Postgresql 9.5 di Ubuntu 16)
sumber