oracle日期序列?

时间:2010-01-18 12:25:13

标签: sql oracle date plsql sequence

我有一个oracle db,我需要一个包含2年所有日期的表格; 例如,从01/01/201101/01/2013

首先我想到了一个序列,但显然唯一支持的类型是数字,所以现在我正在寻找一种有效的方法来做到这一点

欢呼声恶作剧

2 个答案:

答案 0 :(得分:17)

如果你想要的是用连续日期填充一个记录块,这很容易做到。以下查询生成十个日期。您需要做的就是调整种子日期,以便为您提供起始点和level子句中的connect by以适合您的终点,然后将其插入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>

答案 1 :(得分:0)

比如说我们有一个名为:datums的表,其中包含列数据(日期类型) 表包含:

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