복붙노트

[SQL] 어떻게 오라클에서 일정 테이블을 채우는?

SQL

어떻게 오라클에서 일정 테이블을 채우는?

나는 (그것이 어떤 년까지 할 수있다) I 2011에서 2013 년부터 올해의 모든 일에 채우려 오라클 DB의 달력 테이블을 유지하고자합니다. 내가 어떻게 할 수 있습니까?

내 DB 테이블 컬럼을 가지고 있으며, 예를 들어 데이터 세트가 고려 :

S.No  Cal_Dt      DayName 
1     01-01-2011  Monday
2     02-01-2011  Tuesday
3     03-01-2011  Wednesday

등등.

내가 더 이곳에서만 Cal_Dt에 관심 있어요 (DAYNAME는 선택 사항입니다).

해결법

  1. ==============================

    1.이 그것을 할 수있는 간단하고 쉬운 방법입니다

    이 그것을 할 수있는 간단하고 쉬운 방법입니다

    with calendar as (
            select :startdate + rownum - 1 as day
            from dual
            connect by rownum < :enddate - :startdate
        )
    select rownum as "S.No", to_date(day,'dd_mm_yyyy') as "Cal_Dt", to_char(day,'day') as "DayName"
    from calendar
    
  2. ==============================

    2.

    with calendar as (
            select rownum - 1 as daynum
            from dual
            connect by rownum < sysdate - to_date('1-jan-2010') + 1
        )
    select to_date('1-jan-2010') + daynum as monthdate
    from calendar
    ;
    
  3. ==============================

    3.

    declare
      v_date date := to_date('20110101','yyyymmdd');
    begin
    
       while v_date < sysdate + 720 loop
    
          insert into calender
          values ( v_date, to_char(v_date,'DAY'));
    
          v_date := v_date + 1;
    
       end loop;
       commit;
    
    end;
    /
    

    이것은 가장 좋은 방법이 아닙니다 당신은 Allesandro 로시의 솔루션을 사용해야합니다. 오라클 9i에 또는 이전 버전을 사용하고 큰 테이블을 채우는있는 경우에만 유용 할 수 있습니다.

  4. from https://stackoverflow.com/questions/8374959/how-to-populate-calendar-table-in-oracle by cc-by-sa and MIT license