2010-01-18 3 views
7

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

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

Приветствия мистификация

ответ

17

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

 Смежные вопросы

  • Нет связанных вопросов^_^