剛好在開發程式時有需要,就把它紀錄下來。
--取日曆的上一個工作天,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';