使用mysql统计两个日期之间的工作日的天数

该博客介绍了如何在MySQL8.03环境中使用存储过程和Navicat进行交互,通过一个示例展示了如何创建存储过程来计算指定日期范围内的工作日数量。利用WHILE循环和IF条件判断,计算出两个日期间所有工作日的总天数。
摘要由CSDN通过智能技术生成

环境是Mysql8.03,用mysql全系列都可以,可视化页面是Navicat;
因为设计使用到了循环,所以引用了Mysql存储过程实现,具体代码如下,
其中用到主要函数While,结束循环需要加END WHILE;IF a THEN b END IF;

DROP PROCEDURE if EXISTS test;    # 如果存在test存储过程则删除
CREATE procedure test(in Startdate DATE,in Enddate DATE) # 创建开始和结束日期参数,名称为test
BEGIN
# 申明变量,i是自增参数,j是统计天数,iday是递增参数,ileng开始和结束时间间隔
DECLARE i INT ;DECLARE j INT;DECLARE iday DATE;DECLARE ileng INT;  
SET ileng = DATEDIFF(Enddate,Startdate); # 计算开始和结束日期之间的间隔天数
SET i = 0,j=0;  # 变量赋值
WHILE i<=ileng DO # 结束循环的条件: 当i大于两个时间日期差跳出while循环
SET iday=ADDDATE(Startdate,INTERVAL i DAY); # 从开始日期增加,遍历
SET i = i+1;    # 循环一次,i加1
IF DAYOFWEEK(iday) In (1,2,3,4,5) THEN SET j=j+1; END IF; # 判断中间日期是否是工作日
END WHILE;  # 结束while循环
SELECT j AS 日数; # 查看test表数据
END
;  # 结束定义语句
CALL test('2021/01/20',DATE_FORMAT(NOW(),'%Y-%m-%d'));    # 调用存储过程

在这里插入图片描述

效果如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值