将jsonb值转换为时间戳



我有一个从postgres 12的jsonb列中提取的时间戳列表

"2022-06-30T11:19:51.459596+00:00"
"2022-04-28T08:18:08.744732+00:00"
"2022-06-03T09:35:55.919929+00:00"
"2022-06-30T07:02:20.773800+00:00"
"2022-06-30T03:53:43.457369+00:00"
"2022-06-30T09:25:30.116305+00:00"
"2022-06-30T07:31:37.690156+00:00"
"2022-06-18T11:40:51.421568+00:00"

我试图将这些转换为timestamp数据类型。

如果我分别通过

select pg_typeof(to_timestamp('2022-03-30T13:44:55.600166+00:00', 'YYYY-MM-DDTHH:MI:SS'))

它给了我一个合适的时间戳数据类型

然而,我试图通过查询这样做

select count(*)
from users u 
where to_timestamp((column_name -> 'timestamp_value')::text, 'YYYY-MM-DDTHH:MI:SS') >= '2022-06-30' 

这给了我如下所示的错误-

ERROR: invalid value ""202" for "YYYY"
Detail: Value must be an integer.

任何想法?

column_name -> 'timestamp_value'返回jsonb值(在您的情况下是JSON字符串文字),将其转换为::text将返回JSON的文本表示形式-在JSON字符串值周围加上引号。相反,使用

column_name ->> 'timestamp_value'

返回JSON字符串的文本内容。

最新更新