解析存储为字符串的 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")
应该能成功。
我有一些日期作为字符串存储在 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")
应该能成功。