You need to enable JavaScript to run this app. PostgreSQL插入created_on日期字段时报‘16’附近语法错误
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL插入created_on日期字段时报‘16’附近语法错误

报错核心原因

你通过字符串拼接生成SQL语句时,没有给created_on字段对应的日期值加上SQL语法要求的单引号包裹。
你实际拼出来的SQL片段是:
VALUES(2021-03-14 16:25:05,1,1)
数据库解析这段内容时,会把无引号的2021-03-14识别为算术运算表达式,碰到第一个空格就中断了值的识别流程,紧跟着遇到的16完全不符合SQL语法规则,因此直接抛出了定位在16位置的语法错误。

修复方案
  • 最小改动修复:给拼接的日期值手动补上单引号,将原SQL赋值行修改为:
    const value= \INSERT INTO price(created_on,something1, something2)VALUES('${e}',1,1)`;`
    修改后拼出的日期值会被单引号包裹为合法的日期字面量,数据库可以正常识别解析。
  • 长期更稳妥的写法:不要手动拼接原始SQL字符串,改用node-postgres支持的参数化(预编译)查询传值,既可以避免手动拼语句带来的格式问题,也能从根源上规避SQL注入风险,示例代码如下:
// 无需手动做日期格式的字符串转换,直接传入原生Date对象即可
const queryConfig = {
  text: 'INSERT INTO price(created_on, something1, something2) VALUES($1, $2, $3)',
  values: [new Date(), 1, 1]
}
client.query(queryConfig, (err, res) => {
  console.log(err, res);
  client.end();
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 19:06:04