Dmy*_*iak 5 ruby postgresql timezone ruby-on-rails
我需要使用类似的查询
SELECT * FROM items WHERE to_char(created_at AT TIME ZONE 'RAILS_GIVEN_ZONE', 'DD/MM/YYYY') ILIKE '%5/02%'
该RAILS_GIVEN_ZONE
值应始终使用Rails 4应用程序中的时区(可由用户更改),而不是PG的timezone
选项。
但是问题在于,Rails和PG的时区并不完全一对一。
使用偏移量(如+10:00
from中的值Time.zone.now.formatted_offset
)还不够好,因为在这种情况下,PG将无法正确处理夏令时。
因此,问题是将Rails当前时区(Time.zone
)自动映射到PostgreSQL 命名时区的最佳方法是什么?
注意:该create_at
列是timestamptz
(存储为UTC,在必要的任何区域中显示)
中似乎MAPPING
定义了一个常量ActiveSupport::TimeZone
,其中包含的值(除非我弄错了)应该都受 Postgres 支持:
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
根据文档:
键是 Rails TimeZone 名称,值是 TZInfo 标识符。
如果你不想直接使用常量,那里MAPPING
有一个方法,它似乎返回一个:find_tzinfo
TZInfo::TimezoneProxy
http://rubydoc.info/gems/tzinfo/TZInfo/TimezoneProxy
后者包含一个identifier
应该包含所需字符串的方法。
归档时间: |
|
查看次数: |
731 次 |
最近记录: |