如何将 JSONB 对象中的现有时间戳更改为 Postgresql 中的另一种时间戳格式
How to change existing timestamp in JSONB object to another timestamp format in Postgresql
Table user_record
具有返回以下数据的列 info
,而 info
是 jsonb
列。
查询: Select info from user_record;
结果:
{"someId": "XXFUN0123XX", "age": 43, "updatedAt": "2017-02-18 00:00:00"}
现在问题是关于 json 响应中的 updatedAt
字段
select info ->> 'updatedAt' from user_record where id='XXFUN0123XX';
结果:2017-02-18 00:00:00
我必须用这种格式更新 user_record
table 的 info
列的 updatedAt
字段的所有时间戳 -> YYYY-MM-DDTHH:MI:SS+02:00
所以当我做 select info ->> 'updatedAt'
,我会得到这样的结果 -> 2017-02-18T00:00:00+02:00
。
我已经尝试了多种方法并阅读了文档,但找不到合适的解决方案。以下是我尝试执行的一个查询
UPDATE user_record SET info = info || jsonb_build_object('updatedAt',
select to_timestamp(info ->> 'updatedAt','YYYY-MM-DDTHH:MM:SS+02:00') from user_record where id ='XXFUN0123XX')) where id = 'XXFUN0123XX';
在上面的查询中,我试图从内部查询的 json 对象中获取 updatedAt
。
使用 jsonb_set
在 jsonb 中进行更改。并使用 to_char
而不是 to_timestamp
如下所示:
update user_record
set info=jsonb_set(info,'{updatedAt}',to_jsonb(to_char((info ->> 'updatedAt')::timestamp,'YYYY-MM-DD"T"HH24:MI:SS+02:00')))
Table user_record
具有返回以下数据的列 info
,而 info
是 jsonb
列。
查询: Select info from user_record;
结果:
{"someId": "XXFUN0123XX", "age": 43, "updatedAt": "2017-02-18 00:00:00"}
现在问题是关于 json 响应中的 updatedAt
字段
select info ->> 'updatedAt' from user_record where id='XXFUN0123XX';
结果:2017-02-18 00:00:00
我必须用这种格式更新 user_record
table 的 info
列的 updatedAt
字段的所有时间戳 -> YYYY-MM-DDTHH:MI:SS+02:00
所以当我做 select info ->> 'updatedAt'
,我会得到这样的结果 -> 2017-02-18T00:00:00+02:00
。
我已经尝试了多种方法并阅读了文档,但找不到合适的解决方案。以下是我尝试执行的一个查询
UPDATE user_record SET info = info || jsonb_build_object('updatedAt',
select to_timestamp(info ->> 'updatedAt','YYYY-MM-DDTHH:MM:SS+02:00') from user_record where id ='XXFUN0123XX')) where id = 'XXFUN0123XX';
在上面的查询中,我试图从内部查询的 json 对象中获取 updatedAt
。
使用 jsonb_set
在 jsonb 中进行更改。并使用 to_char
而不是 to_timestamp
如下所示:
update user_record
set info=jsonb_set(info,'{updatedAt}',to_jsonb(to_char((info ->> 'updatedAt')::timestamp,'YYYY-MM-DD"T"HH24:MI:SS+02:00')))