【发布时间】:2016-10-30 17:10:03
【问题描述】:
我有一些日期作为字符串存储在 postgresdb 中
"Fri, 24 Jun 2016 04:13:26 -0700"
我想将这些日期视为日期。
我可以使用
to_timestamp(date,'Dy, DD Mon YYYY HH24:MI:SS')
但我不知道如何处理时区。似乎有 OF 作为偏移量的参数。
如果我使用
to_timestamp(date, 'Dy, DD Mon YYYY HH24:MI:SS OF')
查询挂起。我无法弄清楚我在那里做错了什么。
注意:我正在使用 activerecord 和 rails。所以查询实际上是
Model.all.order("to_timestamp(date,'Dy, DD Mon YYYY HH24:MI:SS OF') DESC")
【问题讨论】:
-
也许吧?
Time.zone.parse("Fri, 24 Jun 2016 04:13:26 -0700").to_date。只是一个猜测。签出:api.rubyonrails.org/classes/ActiveSupport/TimeZone.html -
PostgreSQL 足够聪明:
select timestamp with time zone 'Fri, 24 Jun 2016 04:13:26 -0700';为我的位置返回2016-06-24 14:13:26+03。 -
@Abelisto 有没有办法用 to_timestamp 方法做到这一点?问题是我试图用订单而不是选择来做。
-
这只是一个例子。在你的情况下,它可能是
Model.all.order("date::timestamptz DESC") -
@Abelisto 你想把这个答案放在下面吗?这是绝对正确的。我到处搜索如何做到这一点。从文档中真的不清楚。
标签: ruby-on-rails postgresql activerecord timezone timezone-offset