关闭

Oracle plsql 计算日期间工作日天数

2354人阅读 评论(0) 收藏 举报
分类:
declare
  v_fdate date := to_date('2013-10-4','yyyy-mm-dd');
  v_ldate date := to_date('2013-10-22','yyyy-mm-dd');
  v_interval_a number;
  v_interval_b number;
  v_interval_all number;
begin
  --先算整周有几周,然后乘一周五天工作日
  v_interval_a := floor((v_ldate - v_fdate)/7) * 5;
  --然后再算剩余的天数
  v_interval_b := mod((v_ldate - v_fdate),7);
  
  --从头开始循环,共循环剩余天数次,遇到周六周日,减去一天
  for i in 0..v_interval_b - 1 loop
    dbms_output.put_line(to_char(v_fdate + i,'day'));
    case to_char(v_fdate + i,'day')
      when '星期六' then v_interval_b := v_interval_b - 1;
      when '星期日' then v_interval_b := v_interval_b - 1;
      else null;
    end case;
  end loop;
  
  --把两部分合并起来,算出总共工作日,并输出
  v_interval_all := v_interval_a + v_interval_b;
  dbms_output.put_line(to_char(v_fdate,'yyyy-mm-dd') || ' 到 ' || 
  to_char(v_ldate,'yyyy-mm-dd') || ' 有 ' || v_interval_all || ' 天工作日');
end;
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:232255次
    • 积分:4886
    • 等级:
    • 排名:第5857名
    • 原创:227篇
    • 转载:93篇
    • 译文:0篇
    • 评论:13条
    博客专栏
    最新评论