加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – RoR Postgresql timezone group不在Heroku上工

发布时间:2020-12-17 02:01:42 所属栏目:百科 来源:网络整理
导读:我希望我的报告在CST中显示,而我的数据库是UTC.为此,我需要能够按时间列分组并让db进行时区转换. 这适用于我的dev postgresql框: offset = -5 result = ActiveRecord::Base.connection.execute("select date(srl.created_at AT TIME ZONE '#{offset.to_s}')
我希望我的报告在CST中显示,而我的数据库是UTC.为此,我需要能够按时间列分组并让db进行时区转换.

这适用于我的dev postgresql框:

offset = -5
    result = ActiveRecord::Base.connection.execute("select  date(srl.created_at AT TIME
    ZONE '#{offset.to_s}') AS date,count(*) from server_request_logs srl where     
    srl.created_at between '#{@from.to_s(:db)}' and '#{@to.to_s(:db)}' group by 
    date(srl.created_at AT TIME ZONE '#{offset.to_s}')")

在heroku上它出错了:

ActiveRecord::StatementInvalid: PGError: ERROR:  time zone "-5" not recognized

它还没有使用像’America / Winnipeg’这样的TZInfo名称或者像http://www.postgresql.org/docs/7.2/static/timezones.html这样的’CST’支持的时区

有没有人能够使这个工作?

解决方法

首先,确保将时间戳列和变量定义为TIMESTAMP WITH TIME ZONE(或简称timestamptz).在PostgreSQL中,这实际上并不会导致保存任何时间戳;但它是一个固定的时间点,以UTC格式存储.您可以使用干净的语义在您选择的时区进行查看.没有时区的TIMESTAMP(如果你只是说TIMESTAMP就是你得到的),它不是一个固定的时间点,直到它被解决为时区,因此更难以使用.

您引用时区的文档页面来自PostgreSQL的一个非常旧的版本,它已经不再支持了.也许这个页面会对你有所帮助:

http://www.postgresql.org/docs/current/interactive/datetime-config-files.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读