prompt$ date
Mon Oct 7 17:32:24 UTC 2013
prompt$ psql -U postgres
postgres=# show timezone;
TimeZone
----------
GMT
(1 row)
postgres=# select now();
now
-------------------------------
2013-10-07 20:32:42.354384+03
(1 row)
爲什麼它以+03時區格式返回它?我在這裏顯然想念什麼?Postgres now()返回+03時區,但顯示時區返回GMT
編輯:我解決了這個問題,但問題仍然存在。這是發生了什麼:
我已經改變了系統的操作系統時區,而不重新啓動postgres服務器。之前的操作系統時區確實是+03。重新啓動postgres後,它正常運行。但是這是一個奇怪的情況:postgresql.conf沒有明確定義任何時區,並且客戶端(psql)應該始終輸出由「show timezone」報告的時區中的時間戳。所以仍然有這個無法解釋的問題:
爲什麼psql報告GMT作爲時區設置,但在OS新時區中顯示時間戳。這是預期的行爲?
我已經解決了這個問題,但仍不滿意,我看到的行爲。查看我的編輯 – Paralife
除非在postgresql.conf中配置了時區,否則將使用系統默認時區 - 在postgresql服務器啓動時配置的時區。 「psql」將根據「時區」設置(默認值==服務器的默認值)顯示timestamptz-s,無論客戶的時區選擇如何。 還有一件事:小心ALTER USER ...設置時區爲'...'; – IggShaman