oracle过去12个月的日期

时间:2013-10-21 19:34:15

标签: sql oracle oracle11g

需要一个列出过去12个月所有日期的查询

说我现在的日期是10-21-2013。需要使用sysdate来获取数据

结果应该是

10/21/2013
...
10/01/2013
09/30/2013
...
09/01/2013
...
01/31/2013
...
01/01/2013
...
11/30/2012
...
11/01/2012

请帮我这个.. 提前谢谢。

AVG

3 个答案:

答案 0 :(得分:2)

允许闰年和所有,通过使用add_months来计算12个月前的日期,从而生成多少行......

select trunc(sysdate) - rownum + 1 the_date
from   dual
connect by level <= (trunc(sysdate) - add_months(trunc(sysdate),-12))

答案 1 :(得分:1)

你可以这样做:

select to_date('21-oct-2012','dd-mon-yyyy') + rownum -1
from all_objects
where rownum <= 
    to_date('21-oct-2013','dd-mon-yyyy') - to_date('21-oct-2012','dd-mon-yyyy')+1

当然,您可以使用参数作为开始日期和结束日期,以使其更有用。

- 或者 - 使用sysdate,如下所示:

select sysdate + interval '-1' year + rownum -1
from all_objects
where rownum <= 
    sysdate - (sysdate + interval '-1' year)

答案 2 :(得分:0)

Try this

SELECT SYSDATE,
       SYSDATE-1,
       <continue>   
       SYSDATE-30,         
       <continue>
        .........
       <continue>    
       SYSDATE-364,
       SYSDATE-365

FROM DUAL;