ruby-on-rails – 如何将Rails时区名称映射到PostgreSQL?
我需要使用类似的查询
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的时区选项. 但问题是Rails和PG的时区并不完全对应1对1. 使用偏移量(如Time.zone.now.formatted_offset中的10:00)不够好,因为在这种情况下,PG将无法正确处理夏令时. 那么问题是什么是自动将Rails当前时区(Time.zone)映射到PostgreSQL的指定时区的最佳方法? 注意:create_at列是timestamptz(存储为UTC,显示在任何需要的区域中) 解决方法
似乎在ActiveSupport :: TimeZone中定义了一个MAPPING常量,其中包含的值除非我误以为,否则Postgres都应支持这些值:
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html 根据文档:
如果你不想直接使用MAPPING常量,那里有一个find_tzinfo方法,它似乎返回aTZInfo :: TimezoneProxy: http://rubydoc.info/gems/tzinfo/TZInfo/TimezoneProxy 后者采用标识符方法,该方法应包含所需的字符串. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |