2012-03-22 26 views
3

在Django documentation for setting timezone中,時區的list of available choices實際上是postgres時區參數字符串。所以看起來Django使用Postgres來獲取時間。在Django/PostgreSQL中設置自定義時區(印度標準時間)

如果是這樣,那麼問題是,IST用來表示兩個Indian & Israel標準時間,但Postgres的使用IST以色列標準時間(可能混淆了世界人口的6),而且印度NO時區字符串標準時間。不僅如此,Postgres還錯過了像尼泊爾(格林威治標準時間+5:30)和一些太平洋島嶼等其他一些國家的時區。

那麼,有沒有什麼方法可以在Postgres或Django中設置自定義時區字符串(如GMT + 5:30代表印度,GMT + 5:45代表尼泊爾等)?

回答

4

對於印度:

SELECT now() AT TIME ZONE 'Asia/Calcutta'; 
SELECT now()::timestamp AT TIME ZONE 'Asia/Kolkata'; 
SELECT now()::timestamp AT TIME ZONE '5:30'; 

對於尼泊爾:

SELECT now()::timestamp AT TIME ZONE 'Asia/Katmandu'; 
SELECT now()::timestamp AT TIME ZONE 'NPT'; 

要設置時區,整個會議:

SET time zone 'Asia/Calcutta'; 

將其復位(以設置的時區在postgresql.conf中:

RESET time zone; 

找到更多的系統視圖pg_timezone_namespg_timezone_abbrevs

SELECT * 
FROM pg_timezone_names 
WHERE utc_offset BETWEEN '05:00:00' AND '06:00:00' 
ORDER BY utc_offset; 

SELECT * 
FROM pg_timezone_abbrevs 
WHERE utc_offset BETWEEN '05:00:00' AND '06:00:00' 
ORDER BY utc_offset; 

PostgreSQL的手動約AT TIME ZONE結構。關於time zones

+0

我知道,2001年城市的名字從'加爾各答'變成了'加爾各答',但是postgres似乎沒有心情跟上變化。 順便說一句。謝謝! – user1144616 2012-03-22 05:40:57

+0

@ user1144616:很酷,它工作。您可能在我的帖子中錯過了「亞洲/加爾各答」。 – 2012-03-22 05:58:08

+0

postgres確實跟蹤對tzdata的更改,但如果您認真使用8.1作爲鏈接到您的問題,則不再維護。 – araqnid 2012-03-22 23:41:34

相關問題