gpt4 book ai didi

ruby-on-rails - 如何将 Rails 时区名称映射到 PostgreSQL?

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:28 25 4
gpt4 key购买 nike

我需要使用类似于
的查询SELECT * FROM 项目 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 的时区并不完全一一对应。

使用偏移量(如 Time.zone.now.formatted_offset 中的 +10:00)不够好,因为在这种情况下 PG 将无法正确处理夏令时。

所以问题是自动将 Rails 当前时区 (Time.zone) 映射到 PostgreSQL 的 named 时区的最佳方法是什么?

注意: 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方法,它似乎返回一个TZInfo::TimezoneProxy:

http://rubydoc.info/gems/tzinfo/TZInfo/TimezoneProxy

后者采用identifier 方法,该方法应包含所需的字符串。

关于ruby-on-rails - 如何将 Rails 时区名称映射到 PostgreSQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23420859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com