последовательность дат оракула? - PullRequest
7 голосов
/ 18 января 2010

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

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

ура мистификация

Ответы [ 2 ]

17 голосов
/ 18 января 2010

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

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