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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容