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

PostgreSQL执行INSERT时NOW()+INTERVAL 2 DAYS报语法错误

报错原因

从命令行提示符可判断你当前使用的是PostgreSQL数据库,你写的INTERVAL 2 DAYS是MySQL体系的时间间隔语法,不符合PostgreSQL的语法规则:PostgreSQL解析到INTERVAL关键字后,默认要求后续跟被单引号包裹的间隔描述字符串,直接传入裸数字2时,解析器无法识别语法结构,就会抛出位置在"2"附近的语法错误。
你查到的写法本身没有问题,但大概率是对应MySQL数据库的示例,和你当前使用的数据库语法不匹配。

可行的正确写法

以下三种写法都可以在PostgreSQL中实现“当前时间加2天”的逻辑,按需选择即可:

  • 标准间隔字面量写法(通用性最高,日常使用推荐)
    直接将间隔值和单位包裹在单引号内,单位不区分单复数、大小写:
INSERT INTO habit_instances (habit_id,completed,create_date,due_date)
VALUES
(1,FALSE,NOW(),NOW()+INTERVAL '2 DAYS');
  • 数值乘法写法
    用固定单位的间隔做乘法计算,更适合后续需要动态传入间隔天数的场景:
INSERT INTO habit_instances (habit_id,completed,create_date,due_date)
VALUES
(1,FALSE,NOW(),NOW()+ 2 * INTERVAL '1 day');
  • 内置函数构造写法
    使用PostgreSQL原生的make_interval函数构造时间间隔,参数语义清晰,适合需要拼接年、月、日、小时等多单位复杂间隔的场景:
INSERT INTO habit_instances (habit_id,completed,create_date,due_date)
VALUES
(1,FALSE,NOW(),NOW()+ make_interval(days => 2));

补充说明:不要混淆不同数据库的方言语法,MySQL支持INTERVAL 2 DAY这种不带引号的简写写法,但该写法在PostgreSQL、Oracle等数据库中无法正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 00:45:39