2010-01-18 5 views
7

필자는 oracle db를 가지고 있으며 2 년 동안의 모든 날짜를 포함하는 테이블이 필요합니다. 예를 들어 01/01/2011에서 01/01/2013까지입니다.오라클 날짜 시퀀스?

먼저 나는 일련의 생각하지만 분명히 유일하게 지원되는 유형은 숫자, 그래서 지금은이

환호 장난을 할 수있는 효율적인 방법을 찾고

당신이 원하는 것은 블록을 채우는 경우

답변

17

순차적 인 날짜가있는 레코드의 경우, 그렇게하기 쉽습니다. 다음 쿼리는 10 개의 날짜를 생성합니다. 시드 날짜를 조정하여 시작 지점을 지정하고 connect by 절에있는 level 절을 끝점에 맞게 조정 한 다음 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