一直都没写过Oracle的存储过程,今天突然来了一个需求:计算指定日期的前N个工作日或者后N个工作日日期(去除周末,法定节假日无

一直都没写过Oracle的存储过程,,今天突然来了一个需求:计算指定日期的前N个工作日或者后N个工作日日期(去除周末,法定节假日无法计算),然后研究了一下 Oracle的时间函数和循环方法。具体实现方法如下,也没啥难的,对数据库没研究过,也不知道下面的写法效率怎么样。

或者有没有更好的写法。o(︶︿︶)o 唉!

create or replace procedure proc_CalculationWorkDate

(

plan_date in date,--登录日期

flag in number,--1 往前日期,0往后日期

date_number in number,--天数

out_date out date--计算出的日期

)

is

dayOfWeek number:=0;--星期的数字

dates number:=date_number;--往前或者往后的天数(包含工作日的)初始化给他等于天数

i int:=0;

j int:=0;

begin

if flag=1 then--计算往前日期

while i SELECT to_number(to_char(sysdate+i+j,'D')) into dayOfWeek FROM DUAL;--返回星期代表的数值

if dayOfWeek=1 or dayOfWeek=7 then --周六 周日

dates:=dates+1;

i:=i;

j:=j+1;

else

i:=i+1;

end if;

end loop;

select plan_date+dates into out_date from dual;

--DBMS_OUTPUT.PUT_LINE(dates);

end if;

if flag=0 then --计算往后日期

while i SELECT to_number(to_char(sysdate-i-j,'D')) into dayOfWeek FROM DUAL;

if dayOfWeek=1 or dayOfWeek=7 then

dates:=dates+1;

i:=i;

j:=j+1;

else

i:=i+1;

end if;

end loop;

select plan_date-dates into out_date from dual;

--DBMS_OUTPUT.PUT_LINE(dates);

end if;

end;

本文永久更新链接地址:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql存储过程工作日判断_Oracle存储过程根据指定日期返回(N个)工作日的时间...相关推荐

  1. 获取指定日期的第二天的凌晨时间 和获取指定时间+获取指定的天数的日期

    获取指定日期的第二天的凌晨时间代码如下: package cn.migu;import java.text.ParseException; import java.text.SimpleDateFor ...

  2. mysql存储过程基本语法_Oracle存储过程基本语法

    存储过程 1CREATEORREPLACEPROCEDURE存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATEORREPLACEPROCEDURE是一个SQL语句 ...

  3. oracle存储过程无效字符_Oracle存储过程基础+ 错误代码

    存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值 ...

  4. oracle存储过程写法 并行_oracle存储过程的写法

    1.存储过程的基本语法: CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type) IS 变量1 类型(值范围); 变量2 类 ...

  5. plsql 存储过程 批量提交_Oracle 存储过程批量插入数据

    oracle 存储过程批量插入大量数据 declare numCount number; userName varchar2(512); email varchar2(512); markCommen ...

  6. oracle存储过程写法 并行_oracle存储过程写法

    表名改过来,试下? create procedurce pro_insert as declare @allAmount double,@per double,@safeQty double,@typ ...

  7. python根据月份判断季度_python获取指定日期范围内的每一天,每个月,每季度的方法...

    1.获取所有天,返回一个列表: def getBetweenDay(begin_date): date_list = [] begin_date = datetime.datetime.strptim ...

  8. 提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。

    提供源码:java获取节假日.工作日,存入数据库,查找指定日期前一天,后一天. 码云地址: https://gitee.com/guyuanman/holiday 业务场景: 好多公司的业务在处理的时 ...

  9. Java 获取日期前一年、月、日,指定日期的前几天,后几天

    1. 方法1: 如果是 java8, 可以使用 LocalDate 获取 // 获取当前日期前一天的日期LocalDate localDate = LocalDate.now().minusDays( ...

最新文章

  1. WSE 3.0 文档翻译:安装WSE3.0
  2. 实体链接:信息抽取中的NLP的基础任务
  3. C#设计模式之二十职责链模式(Chain of Responsibility Pattern)【行为型】
  4. ubuntu websocket python2
  5. accept 阻塞怎么断开_暖气片放水就热不放水了就不热,怎么解决?
  6. 【数据结构与算法】之深入解析“最好买卖股票的时机含冷冻期”的求解思路与算法示例
  7. java性能监视_Java 9和应用程序性能监视的激动人心之处
  8. oracle em 删除 重建,Oracle 11g 重建EM需要删除的对象
  9. PCL编程笔记——Assertion `px != 0' failed.
  10. 网络是怎样连接的-IP与以太网的包收发操作(三)
  11. read 文件一个字节实际会发生多大的磁盘IO?
  12. 淘宝婴儿商品销量分析
  13. zTree中设置idKey跟pId对象关联
  14. 中国十大调查研究报告排名数据
  15. 已知等价关系求商集_等价关系习题 -
  16. Watching the English:英国社会阶层攀爬指南?
  17. 【前端】你真的理解JavaScript中的变量和数据类型吗
  18. Html5+Css3实现类似网易云音乐的移动版播放器
  19. 服务器硬盘红灯常亮_服务器硬盘灯常亮红色
  20. 英国全能数学家John Conway因新冠去世,他曾发明风靡一个时代的电脑游戏,还能心算万年历...

热门文章

  1. Python 命令行cmd指定颜色设置
  2. 苹果8黑屏无法强制开机_iPhone黑屏转圈圈,无法开机解决方法
  3. 思必驰:启发式对话中的知识管理
  4. GlobalSign证书过期不续费还可继续访问吗
  5. 爪哇国新游记之五----继承与接口
  6. 【历史上的今天】9 月 12 日:世界上第一块集成电路诞生;QNX 操作系统开源;苹果推出 iPhone X
  7. 一政网:考教师编制,掌握出题结构很重要!
  8. 边云协同的优点_云边协同的现实意义
  9. 干货:服务器网卡组技术原理与实践
  10. 怎么用单片机做一个比较有创新的东西?