我有一个从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字符串的文本内容。