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

如何修改递归SQL替换硬编码月数为指定结束日期生成月度数据

修改后的Oracle SQL代码

直接替换硬编码的月份数量为指定结束日期的当月第一天即可,以下是调整后的代码:

WITH
  test_data
  AS
   (SELECT TO_DATE ('01.03.2008', 'DD.MM.YYYY') AS mnth FROM DUAL),
  mnth_data (mnth, max_mnth)
  AS
   (SELECT mnth, TRUNC(TO_DATE ('04.30.2023', 'DD.MM.YYYY'), 'MM') AS max_mnth FROM test_data
    UNION ALL
    SELECT ADD_MONTHS (mnth, 1) AS mnth, max_mnth
     FROM mnth_data
    WHERE mnth < max_mnth)
SELECT mnth
 FROM mnth_data

关键修改说明

  • 把原代码中ADD_MONTHS(mnth, 200)替换成TRUNC(TO_DATE('04.30.2023', 'DD.MM.YYYY'), 'MM'):通过TRUNC函数将指定的结束日期(04.30.2023)截断到当月第一天,直接得到目标月份的起始日期(2023-04-01),彻底移除硬编码的月份数。
  • 递归条件WHERE mnth < max_mnth保持不变,这样递归会生成从起始月份(2008年3月)到目标月份(2023年4月)的所有每月1日数据,最后一行正好是2023年4月1日。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:35:01