sql 计算工作日数

一、创建表

CREATE TABLE non_working_days (

`date` date NOT NULL

)

2023-01-25

2023-04-02

2023-04-22

2023-08-20

2023-09-29

二、函数

复制代码
CREATE FUNCTION calculate_workday(start_time DATE, end_time DATE)
    RETURNS INT
BEGIN
    DECLARE day_diff INT;

    SELECT   DATEDIFF(end_date, start_date) + 1 - COUNT(non_working_days.date) into day_diff
    FROM  non_working_days
              CROSS JOIN
          (SELECT start_time AS start_date,end_time AS end_date) AS date_range
    WHERE  non_working_days.date BETWEEN start_date AND end_date;

    RETURN day_diff;
END

三 测试

复制代码
-- 测试
SELECT calculate_workday('2024-02-20 12:12:01', '2024-02-29')

四、 第三方获取假期接口

复制代码
"https://timor.tech/api/holiday/year/"
相关推荐
Mr. Cao code7 分钟前
MySQL服务器配置与socket连接详解
服务器·数据库·mysql
Yupureki9 分钟前
《MySQL数据库基础》1. 数据库基础
c语言·开发语言·数据库·c++·mysql·oracle·github
杰克尼20 分钟前
苍穹外卖--day08
java·数据库·spring boot·mybatis·notepad++
xyyaihxl23 分钟前
【MySQL】复合查询
数据库·mysql
m0_7166670724 分钟前
NumPy入门:高性能科学计算的基础
jvm·数据库·python
lierenvip39 分钟前
SQL 建表语句详解
java·数据库·sql
zuguangboy39 分钟前
【Oracle-无效的参数绑定】DateTimeOffset映射TIMESTAMP WITH LOCAL TIME ZONE踩坑记
数据库·oracle
未来龙皇小蓝1 小时前
【MySQL-索引调优】02:单列索引
数据库·mysql·性能优化
剑锋所指,所向披靡!1 小时前
MySQL数据的增删改查
java·数据库·mysql
Villiam_AY1 小时前
一次 DNS 端口引发的代理网络和公司内网冲突问题
java·服务器·数据库