Sql oracle日期序列?

Sql oracle日期序列?,sql,oracle,date,plsql,sequence,Sql,Oracle,Date,Plsql,Sequence,我有一个oracle数据库,我需要一个包含所有跨越2年的日期的表; 例如从2011年1月1日到2013年1月1日 首先我想到了序列,但显然唯一支持的类型是number,所以现在我正在寻找一种有效的方法来实现这一点 cheers hoax如果你想用连续的日期填充一块记录,那很容易做到。下面的查询生成十个日期。您所需要做的就是调整种子日期,以提供您的起点和connectby子句中的level以适合您的终点,然后将其插入到insert语句中 SQL> select (trunc(sysdate,

我有一个oracle数据库,我需要一个包含所有跨越2年的日期的表; 例如从
2011年1月1日
2013年1月1日

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


cheers hoax

如果你想用连续的日期填充一块记录,那很容易做到。下面的查询生成十个日期。您所需要做的就是调整种子日期,以提供您的起点和
connectby
子句中的
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>
SQL>select(trunc(sysdate,'MM')-1)+level
2从双
3.分层连接

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

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