последовательность дат oracle?

у меня есть oracle db, и мне нужна таблица, содержащая все даты, охватывающие 2 года; например,01/01/2011 до 01/01/2013.

сначала я подумал о последовательности, но, по-видимому, единственным поддерживаемым типом является число, поэтому теперь я ищу эффективный способ сделать это

ура обман

2 ответов


если вы хотите заполнить блок записей последовательными датами, это достаточно легко сделать. Следующий запрос генерирует десять дат. Все, что вам нужно сделать, это настроить дату семян, чтобы дать вам начальную точку и 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>

скажем, например, у нас есть таблица с именем: 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