我需要使用類似的查詢
SELECT * FROM items WHERE to_char(created_at AT TIME ZONE 'RAILS_GIVEN_ZONE', 'DD/MM/YYYY') ILIKE '%5/02%'
如何將Rails時區名稱映射到PostgreSQL?
其中RAILS_GIVEN_ZONE
值應始終使用的時區從軌道4的應用程序(可以由用戶改變),而不是PG的timezone
選項。
但問題是來自Rails和PG的時區並不完全一一對應。
使用偏移量(來自Time.zone.now.formatted_offset
的+10:00
)不夠好,因爲在這種情況下,PG將無法正確處理夏令時。
所以問題是自動將Rails當前時區(Time.zone
)映射到名爲時區的PostgreSQL的的最佳方式是什麼?
注:的create_at
列timestamptz
(存儲爲UTC,在任何區域需要顯示)
」不夠好,因爲在這種情況下,PG將無法正確處理夏令時。「 - 你不是這個意思:因爲Rails沒有正確處理DST? (PG處理它就好了,帶有時間戳類型。) –
@Denis no PG實際上無法從偏移量中理解夏令時,因爲偏移量通常有多個區域。閱讀http://www.postgresql.org/docs/9.1/static/datatype-datetime.html#DATATYPE-TIMEZONES –
不回答該問題,但可能對該主題有意思的閱讀:http://stackoverflow.com/問題/ 9571392 /忽略-timezones-allagether-in-rails-and-postgresql –