请输入
菜单

计算2个日期之间的差去掉周末

下载

一、demo脚本

DROP FUNCTION IF EXISTS `DATEDIFF_NOWEEKEND`;
delimiter ||
CREATE FUNCTION `DATEDIFF_NOWEEKEND`(expr1 DATE,expr2 DATE) RETURNS mediumtext CHARSET utf8
BEGIN
    
    DECLARE tmp_days INT DEFAULT 0; 
    DECLARE tmp_date1 DATE DEFAULT NULL; 
    DECLARE tmp_date2 DATE DEFAULT NULL; 

    SET tmp_date1=DATE_FORMAT(expr1,'%Y-%m-%d');
    SET tmp_date2=DATE_FORMAT(expr2,'%Y-%m-%d');

    IF tmp_date1>tmp_date2 THEN
        WHILE tmp_date1>tmp_date2 DO 
            SET tmp_days=tmp_days+IF(WEEKDAY(tmp_date1)>=5,0,1);
            SET tmp_date1=DATE_SUB(tmp_date1,INTERVAL 1 DAY);
        END WHILE;
    ELSEIF tmp_date1<tmp_date2 THEN
        WHILE tmp_date1<tmp_date2 DO 
            SET tmp_days=tmp_days-IF(WEEKDAY(tmp_date1)>=5,0,1);
            SET tmp_date1=DATE_ADD(tmp_date1,INTERVAL 1 DAY);
        END WHILE;
    END IF;

    RETURN tmp_days;

END ||
delimiter;

SET @date1='2022-03-11';
SET @date2='2022-03-14';
SELECT DATEDIFF(@date1,@date2),DATEDIFF_NOWEEKEND(@date1,@date2);

计算2个日期之间的差去掉周末.sql

最近修改: 2025-02-08