У меня есть дб оракула, и мне нужна таблица, содержащая все даты, охватывающие 2 года; например, от 01/01/2011
кому: 01/01/2013
.
Сначала я думал о последовательности, но по-видимому единственный поддерживаемый тип является числом, поэтому теперь я ищу эффективный способ сделать это
обман аплодисментов
Если вы хотите заполнить блок записей последовательными датами, это достаточно легко сделать. Следующий запрос генерирует десять дат. Все, что вам нужно сделать, это настроить начальную дату, чтобы указать вашу начальную точку, и уровень
в предложении connect by
, чтобы он соответствовал вашей конечной точке, а затем подключить его к ] вставить
оператор.
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, с таблицей столбца (тип даты) Таблица содержит:
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