环境是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'));    # 调用存储过程

在这里插入图片描述

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐