You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新PostgreSQL的JSON日期字段(从另一列取值)

解决PostgreSQL 10.9用列值更新JSON日期字段的问题

你之前的语句报错是因为'{"date_field":column}'里的column被当作JSON字面量解析,而非引用表中的列值,PostgreSQL无法识别这个无效的JSON token。针对PostgreSQL 10.9,有两种可靠的写法:

方法1:使用json_build_object函数(推荐)

这个函数会自动处理数据类型转换,避免手动拼接字符串的转义问题:

UPDATE table 
SET json_column = json_column || json_build_object('date_field', column)
WHERE id = 123;

如果column是日期/timestamp类型,json_build_object会自动将其转换为符合JSON格式的字符串,无需额外处理。

方法2:拼接合法JSON字符串并转换类型

如果习惯字符串拼接,需要确保生成的是合法JSON格式,再转换为json类型:

UPDATE table 
SET json_column = json_column || ('{"date_field":"' || column::text || '"}')::json
WHERE id = 123;

注意这里需要把column显式转为text类型,避免类型拼接错误,同时给日期值加上双引号,保证JSON格式合法。

两种方法都会将目标JSON字段中的date_field键值替换为指定列的内容,如果原JSON中没有该键则新增。

内容的提问来源于stack exchange,提问作者K Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:57:33