2010-01-18 72 views
7

我有一个oracle数据库,我需要一个包含所有日期跨度为2年的表; 例如从01/01/201101/01/2013oracle日期序列?

首先,我想到了一个序列,但显然只支持类型为号,所以现在我正在寻找一种有效的方式来做到这一点

欢呼骗局

回答

17

如果你想要的是填充块的连续日期记录,这很容易做到。以下查询生成十个日期。您只需调整种子日期以给出起点,并在connect by子句中输入level以适合您的终点,然后将其插入insert语句。

SQL> select (trunc(sysdate, 'MM')-1) + level 
    2 from dual 
    3 connect by level <= 10 
    4/

(TRUNC(SY 
--------- 
01-JAN-10 
02-JAN-10 
03-JAN-10 
04-JAN-10 
05-JAN-10 
06-JAN-10 
07-JAN-10 
08-JAN-10 
09-JAN-10 
10-JAN-10 

10 rows selected. 

SQL> 
0

比方说,我们有一个名为表:基准,与列数据(日期型) 表包含:

21-01-2010 
22-01-2010 
01-12-2009 
06-10-2008 
03-07-2007 

那么你可以使用:

SELECT * 
    FROM datums 
WHERE datum 
BETWEEN to_date('01/01/2009','mm/dd/yyyy') 
    AND to_date('12/31/2010','mm/dd/yyyy') 

结果:

21-01-2010 
22-01-2010 
01-12-2009