我有一些日期作为字符串存储在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")
PostgreSQL支持多种格式的日期/时间/时间戳值输入。参考文献
也支持您的格式,因此可以使用简单的类型强制转换。在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")
你可以试试这个方法
"Fri, 24 Jun 2016 04:13:26 -0700".to_datetime
希望这对你有帮助。