如何在Oracle查询中的两个给定日期之间选择日期?

Pra*_*ran 5 oracle

如何在Oracle查询中的两个给定日期之间选择日期?

Gre*_*lds 10

SELECT TO_DATE('12/01/2003', 'MM/DD/YYYY') - 1 + rownum AS d
FROM all_objects
WHERE TO_DATE('12/01/2003', 'MM/DD/YYYY') - 1 + rownum <= TO_DATE('12/05/2003', 'MM/DD/YYYY')
Run Code Online (Sandbox Code Playgroud)

http://forums.devshed.com/oracle-development-96/select-all-dates-between-two-dates-92997.html

  • 基于表格的任何内容都基于您的日期范围将小于表格中的行数的概念。如果您碰巧通过了一个很大的日期范围,则此解决方案将失败。这就是为什么像我的解决方案一样使用 LEVEL 伪列是可取的,因为它对任何任意范围都有效。 (2认同)

dia*_*man 8

SELECT * FROM your_table WHERE your_date_field BETWEEN DATE '2010-01-01' AND DATE '2011-01-01';
Run Code Online (Sandbox Code Playgroud)


Mic*_*ton 5

您可以以一种巧妙的方式使用 LEVEL 伪列来生成一个系列,因此,例如,要获取从今天到 20 天之间的天数列表,我可以:

select trunc(sysdate+lvl) from
  (select level lvl from dual connect by level < ((sysdate+20)-sysdate - 1) )
order by 1  
Run Code Online (Sandbox Code Playgroud)

通常,您可以看到这如何适用于任何两个给定日期。

select trunc(early_date+lvl) from
  (select level lvl from dual connect by level < (later_Date-early_date-1) )
order by 1 
Run Code Online (Sandbox Code Playgroud)

如果您还想包括两个结束日期,您可以调整子句。