解析存储为字符串的Postgres日期,包括偏移时区



我有一些日期作为字符串存储在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

希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新