EBS 取日曆工作日


剛好在開發程式時有需要,就把它紀錄下來。

--取日曆的上一個工作天,seq_num有值表示工作,無值表示休假
    select max( calendar_date )
        FROM  bom_calendar_dates bcd
        WHERE bcd. calendar_code = <日曆名稱>
            AND bcd . calendar_date < to_date('20120723' , 'yyyymmdd')
              and seq_num is not null ;

--取下一個工作天
select min(calendar_date)
  FROM  bom_calendar_dates bcd 
  WHERE bcd.calendar_code =<日曆名稱>
AND bcd.calendar_date > to_date('20120727','yyyymmdd') 
  and seq_num is not null ;
  
--取下一週指定天,下面的語法會回傳下一周的星期一
--因為預設是以星期日為一周的第一天
select next_day(sysdate,2) from dual;  

--日曆例外表,EXCEPTION_TYPE=1表示週六週日要上班;2表示原本上班日卻休假
    SELECT * FROM bom_calendar_exceptions bce 
        WHERE   to_char(bce .exception_date, 'yyyy') = '2011';