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

Parse Postgres date stored as string including offset timezone

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

你可以试试这个方法

"Fri, 24 Jun 2016 04:13:26 -0700".to_datetime

希望对您有所帮助。

PostgreSQL 支持多种格式的 date/time/timestamp 值输入。 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")

应该能成功。