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/"
相关推荐
廋到被风吹走10 分钟前
【MySql】超时问题分析
java·数据库·mysql
y = xⁿ13 分钟前
重生之我创作出了小红书:对象存储模块,用户资料模块
后端·mysql·intellij-idea
Y0011123617 分钟前
Day10-MySQL-事物
数据库·sql·mysql
轩情吖21 分钟前
MySQL之用户管理
数据库·c++·后端·mysql·权限管理·用户管理
零雲26 分钟前
java面试:Spring事务失效的场景有哪些?
java·数据库·面试
wenlonglanying35 分钟前
mysql之联合索引
数据库·mysql
Aloha_up39 分钟前
redis与数据库的一致性问题分析
数据库·redis·缓存
牢七1 小时前
jfinal_cms-v5.1.0 审计黑盒
数据库
zzh0811 小时前
MySQL数据库操作笔记
数据库·笔记·mysql
6+h1 小时前
【Redis】底层原理解析(SDS / 跳表 / IO多路复用 / 单线程模型)
数据库·redis·bootstrap