oracle数据库:自定义带日期参数的函数,输入开始时间,计算N个工作日后的日期函数

本文介绍了如何在Oracle数据库中创建一个名为GET_ADDWORKDATE的函数,该函数接受一个开始日期和一个整数N作为参数,用于计算从给定开始日期后的N个工作日的日期。函数通过遍历节假日维护表(HOLIDAY_TABLE)来考虑工作日与休息日的转换。在测试中,使用SQL语句调用此函数,并强调在调试时,日期输入需使用时间插件避免错误。
摘要由CSDN通过智能技术生成

CREATE OR REPLACE FUNCTION GET_ADDWORKDATE(IN_DATE IN DATE,
                                           ADD_DAY IN NUMBER) RETURN DATE IS
  GET_DATE         DATE; --返回N个工作日后的日期
  XXR_NUMB         NUMBER; --休息日天数
  FORWARD_XXR_NUMB NUMBER; --前一个休息日的值

  /* 该函数作用:输入开始日期,工作日N,计算N个工作日后的日期
  */
BEGIN
  GET_DATE         := IN_DATE + ADD_DAY; --初始化N个工作日后的日期
  FORWARD_XXR_NUMB := 0; --初始化值
  LOOP
    SELECT COUNT(1)
      INTO XXR_NUMB
      FROM HOLIDAY_TABLE --节假日维护表
     WHERE RQ >= IN_DATE
       AND RQ < GET_DATE;
    IF XXR_NUMB - FORWARD_XXR_NUMB = 0 THEN
      GET_DATE := GET_DATE;
      RETURN GET_DATE;
      COMMIT;
    ELSE
      GET_DATE := GET_DATE + XXR_NUMB;
      FORWARD_XXR_NUMB := XXR_NUMB;
    END IF;
  END LOOP;
END GET_ADDWORKDATE;

 

测试sql语句:sel

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值