码迷,mamicode.com
首页 > 数据库 > 详细

ORACLE判断两个日期间隔几个工作日

时间:2017-09-07 18:18:30      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:star   art   mod   function   char   存储   ret   存储过程   time   

CreateTime--2017年9月7日17:14:56

Author:Marydon

ORACLE判断两个日期间隔几个工作日

方法:使用存储过程

/**
 * 判断两个日期间隔几个工作日
 */
CREATE OR REPLACE FUNCTION "FUN_BETWEENDAYS"(start_dt date, end_dt date)
  RETURN INT IS
  t_days INT;
BEGIN
  SELECT (TRUNC(end_dt - start_dt) - ((CASE
           WHEN (8 - to_number(to_char(start_dt, D))) >
                TRUNC(end_dt - start_dt) + 1 THEN
            0
           ELSE
            trunc((TRUNC(end_dt - start_dt) -
                  (8 - to_number(to_char(start_dt, D)))) / 7) + 1
         END) + (CASE
           WHEN MOD(8 - to_char(start_dt, D), 7) >
                TRUNC(end_dt - start_dt) - 1 THEN
            0
           ELSE
            TRUNC((TRUNC(end_dt - start_dt) -
                  (MOD(8 - to_char(start_dt, D), 7) + 1)) / 7) + 1
         END)))
    INTO t_days
    FROM dual;
  RETURN t_days;
END FUN_BETWEENDAYS;

 

 

ORACLE判断两个日期间隔几个工作日

标签:star   art   mod   function   char   存储   ret   存储过程   time   

原文地址:http://www.cnblogs.com/Marydon20170307/p/7490791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!