mysql数据库需要写一个sql,要计算某个日期加上10个工作日(不包括周末和节假日)后的日期

mysql数据库需要写一个sql,要计算某个日期加上10个工作日(不包括周末和节假日)后的日期,请问这个sql怎么写

  1. 排除周末(周六和周日)

  2. 排除节假日(需要一个节假日表,已建)

能帮忙具体写下吗,谢谢啦

SQL mmc0112 发布于 2025-5-8 17:06 (编辑于 2025-5-8 17:48)
1min目标场景问卷 立即参与
回答问题
悬赏:8 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
CD20160914Lv8专家互助
发布于2025-5-8 20:24(编辑于 2025-5-8 20:28)

创建一个存储过程,,再调用这个存储,我的这个张表把节假日与周末都表示出来了的

然后存储以下为存储过程

-------------------------------------

CREATE PROCEDURE AddWorkDays(IN startDate DATE, IN workDays INT, OUT resultDate DATE)

BEGIN

    DECLARE currentDate DATE;

    DECLARE workdayCounter INT DEFAULT 0;

    

    SET currentDate = startDate;

    WHILE workdayCounter < workDays DO       

        SET currentDate = DATE_ADD(currentDate, INTERVAL 1 DAY);        

       

        IF NOT EXISTS (

            SELECT 1 FROM holiday_info 

            WHERE date_id = currentDate AND (code_type = 1 OR code_type = 3)

        ) THEN

            SET workdayCounter = workdayCounter + 1;

        END IF;

    END WHILE;    

    SET resultDate = currentDate;

END

--------------------------------------------

我的holiday_info 表   code_type 对应的意思      

 工作日: 0

法定节假日: 1

休息日加班(调休): 2

休息日: 3

---------------------

image.png

-----------------最后存储的查询结果--------------------------

比如2025-04-27是上班,加10天后正确的结果是2025-05-14,因为1-5号是法定节日,还有其它周末

image.png

2025-05-05加10个工作日

image.png

最佳回答
0
用户k6280494Lv6资深互助
发布于2025-5-8 17:10(编辑于 2025-5-8 17:11)
最佳回答
0
Z4u3z1Lv6专家互助
发布于2025-5-8 17:11

排除节假日(需要一个节假日表,已建)

这个表都建了 你还不如把工作日也加进去 这样就可以直接查询

最佳回答
0
孤陌Lv6资深互助
发布于2025-5-8 17:13(编辑于 2025-5-8 17:14)

用归递查询来实现  用豆包 就可以给出例子

最佳回答
0
FR-LeonLv4初级互助
发布于2025-5-8 17:22

1

  • 5关注人数
  • 84浏览人数
  • 最后回答于:2025-5-8 20:28
    请选择关闭问题的原因
    确定 取消
    返回顶部