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

PostgreSQL插入日期时触发类型不匹配42804错误如何解决

报错原因

你写的02/01/2012没有加单引号,PostgreSQL会将其识别为除法算术表达式,计算得到的结果是整数,自然和prod_date字段的date类型不匹配。


解决方案

  • 方案1:优先使用ISO标准日期格式(无兼容性问题)
    用单引号包裹YYYY-MM-DD格式的日期字符串,是最稳妥的写法,不受数据库日期格式配置影响。注意根据你的业务需求确认日期是1月2日还是2月1日,调整年月日顺序即可。
    正确语句示例:
INSERT INTO well.production_monthly(
    api10, prod_date,  oil, gas, water)
    VALUES (4246141341,'2012-01-02', 102, 27, 0);
  • 方案2:用TO_DATE函数明确指定日期格式
    如果你需要保留月/日/年的输入格式,可通过TO_DATE函数声明格式规则,避免解析错误:
INSERT INTO well.production_monthly(
    api10, prod_date,  oil, gas, water)
    VALUES (4246141341, TO_DATE('02/01/2012', 'MM/DD/YYYY'), 102, 27, 0);

如果你的输入是日/月/年格式,把第二个参数改成'DD/MM/YYYY'即可。

  • 方案3:字符串强制类型转换(仅推荐确认数据库日期配置时使用)
    如果你的数据库datestyle参数配置为MDY(月/日/年),也可以直接将带单引号的日期字符串强转为date类型:
INSERT INTO well.production_monthly(
    api10, prod_date,  oil, gas, water)
    VALUES (4246141341, '02/01/2012'::date, 102, 27, 0);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:57:05