【发布时间】:2016-02-03 11:51:24
【问题描述】:
我正在尝试为输入日期参数选择接下来的 30 个日期,即如果我输入 2/3/2016,我应该能够选择接下来的 30 天。有没有办法在 oracle 中做到这一点? 预期的输出是: 2016 年 3 月 3 日 2016 年 4 月 3 日 2016 年 5 月 3 日......
【问题讨论】:
标签: sql oracle oracle11g oracle10g
我正在尝试为输入日期参数选择接下来的 30 个日期,即如果我输入 2/3/2016,我应该能够选择接下来的 30 天。有没有办法在 oracle 中做到这一点? 预期的输出是: 2016 年 3 月 3 日 2016 年 4 月 3 日 2016 年 5 月 3 日......
【问题讨论】:
标签: sql oracle oracle11g oracle10g
尝试以下操作,将 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)
【讨论】: