последовательность дат 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