計算兩個日期之間所有的工作日

壹頁書發表於2013-11-04

  1. s是開始日期,e是結束日期

  2. create or replace function workday(s in date,e in date) RETURN INTEGER
  3. as
  4. result integer;
  5. begin
  6. select count(*) into result from (
  7.     select to_char(s+level-1,'d') w,s+level-1 from dual connect by level<=(e-s+1)
  8. )
  9. where w not in ('1','7');
  10. return result;
  11. end workday;
  12. /

SQL> select workday(to_date('20131101','yyyymmdd'),to_date('20131115','yyyymmdd')) workday from dual;


   WORKDAY
----------
        11


SQL> select workday(to_date('20131101','yyyymmdd'),to_date('20131125','yyyymmdd')) workday from dual;


   WORKDAY
----------
        17


SQL> select workday(to_date('20131101','yyyymmdd'),to_date('20131130','yyyymmdd')) workday from dual;


   WORKDAY
----------
        21

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-775663/,如需轉載,請註明出處,否則將追究法律責任。

相關文章