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

PostgreSQL递归CTE生成连续日期报错问题求助

PostgreSQL递归CTE生成连续日期的问题解决

问题1:OPTION (MAXRECURSION 0)语法错误

  • 这是SQL Server专属语法,PostgreSQL完全不支持该选项。
  • PostgreSQL递归CTE的递归深度由参数max_recursion_depth控制(默认值1000),如果需要无限制递归,可在会话级别执行:
    SET max_recursion_depth = 0;
    
    该设置仅对当前会话有效,全局修改需调整postgresql.conf配置。

问题2:无法引用CTE项,需使用WITH RECURSIVE

  • PostgreSQL要求递归CTE必须显式声明WITH RECURSIVE,不能用普通的WITH关键字。
  • 另外原代码中的Dateadd是SQL Server函数,PostgreSQL推荐直接用日期运算语法(更简洁高效),比如thedate + 1(日期加整数等价于加N天),或thedate + INTERVAL '1 day'。

修正后的完整查询代码

WITH RECURSIVE datecalendar AS (
    SELECT '2023-08-08'::DATE AS thedate
    UNION ALL
    SELECT thedate + 1
    FROM datecalendar
    WHERE thedate + 1 <= '2023-08-12'::DATE
)
SELECT * FROM datecalendar;

执行结果

会生成从2023-08-08到2023-08-12的连续日期列表:

thedate
------------
 2023-08-08
 2023-08-09
 2023-08-10
 2023-08-11
 2023-08-12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:14:56