我在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")
答案 0 :(得分:2)
PostgreSQL支持多种格式的日期/时间/时间戳值输入。 See the reference
您的格式也受支持,因此可以使用简单的类型转换。 PostgreSQL中有三种方式和两种类型的符号:
timestamp with time zone
或更短timestamptz
并输入类似:
cast('Fri, 24 Jun 2016 04:13:26 -0700' as timestamp with time zone)
timestamp with time zone 'Fri, 24 Jun 2016 04:13:26 -0700'
'Fri, 24 Jun 2016 04:13:26 -0700'::timestamptz
这是平等的。您可以根据自己的喜好使用任何组合。
回答你的问题:
Model.all.order("date::timestamptz DESC")
应该成功。
答案 1 :(得分:0)
你可以试试这个方法
“星期五,2016年6月24日04:13:26 -0700”.to_datetime
希望,这会对你有帮助。