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
根据文档:
Keys are Rails TimeZone names,values are TZInfo IDentifIErs.
如果你不想直接使用MAPPing常量,那里有一个find_tzinfo方法,它似乎返回aTZInfo :: TimezoneProxy:
http://rubydoc.info/gems/tzinfo/TZInfo/TimezoneProxy
后者采用标识符方法,该方法应包含所需的字符串.
总结以上是内存溢出为你收集整理的ruby-on-rails – 如何将Rails时区名称映射到PostgreSQL?全部内容,希望文章能够帮你解决ruby-on-rails – 如何将Rails时区名称映射到PostgreSQL?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)