如何 select 为 oracle pl/sql 或 sql 中的输入日期参数列出接下来的 30 个日期?
How to select list of next 30 dates for an input date parameter in oracle pl/sql or sql?
我正在尝试 select 接下来的 30 个日期作为输入日期参数,即如果我输入 2/3/2016 我应该能够 select 接下来的 30 天。有没有办法在 oracle 中做到这一点?
预期的输出是:
2016 年 3 月 3 日
2016 年 4 月 3 日
2016 年 5 月 3 日....
尝试以下操作,将 sysdate
替换为您的开始日期:
select trunc(sysdate) + level
from dual
connect by level <= 30
这是基于分层查询以及将数字添加到日期意味着添加天数这一事实。
LEVEL
是一个伪列,在您使用 CONNECT BY
的地方是一次性的,它似乎表示递归中的级别;因此,第一次出现的级别为 1,然后是 2,依此类推。
Here 是有关语法和递归实现方式的更多详细信息。
鉴于我们在 DUAL 上有递归,没有条件(没有使用 PRIOR
子句),我们使用 LEVEL
来计算 1、2、3(+ LEVEL
)天并限制我们需要的递归级别数 (<=30
)
我正在尝试 select 接下来的 30 个日期作为输入日期参数,即如果我输入 2/3/2016 我应该能够 select 接下来的 30 天。有没有办法在 oracle 中做到这一点? 预期的输出是: 2016 年 3 月 3 日 2016 年 4 月 3 日 2016 年 5 月 3 日....
尝试以下操作,将 sysdate
替换为您的开始日期:
select trunc(sysdate) + level
from dual
connect by level <= 30
这是基于分层查询以及将数字添加到日期意味着添加天数这一事实。
LEVEL
是一个伪列,在您使用 CONNECT BY
的地方是一次性的,它似乎表示递归中的级别;因此,第一次出现的级别为 1,然后是 2,依此类推。
Here 是有关语法和递归实现方式的更多详细信息。
鉴于我们在 DUAL 上有递归,没有条件(没有使用 PRIOR
子句),我们使用 LEVEL
来计算 1、2、3(+ LEVEL
)天并限制我们需要的递归级别数 (<=30
)