如何从 mysql 中的 DATE_SUB 中排除周末

How to exclude weekends from DATE_SUB in mysql

有谁知道如何从 MYSQL 中的 DATE_SUB 函数中排除周末?我想从 CURDATE() 搜索过去 1500 个工作日,但正在努力寻找解决方案?

非常感谢任何指导。

我知道之前有人在 Whosebug 上问过这个问题(请参阅下面的 link),但我无法让他的解决方案起作用

SET @zi = '2015.07.25';
SET @n =6;

SELECT DATE_SUB(
    @zi,
    INTERVAL CASE 
        WHEN DAYOFWEEK(@zi)=1 THEN (@n +(FLOOR((@n-0.5)/5)+1)*2 - 1) 
        WHEN DAYOFWEEK(@zi)=2 THEN (@n +(FLOOR((@n-0.5)/5)+1)*2)
        WHEN DAYOFWEEK(@zi)=3 THEN (@n-1 +(FLOOR(((@n-1)-0.5)/5)+1)*2 + 1)
        WHEN DAYOFWEEK(@zi)=4 THEN (@n-2 +(FLOOR(((@n-2)-0.5)/5)+1)*2 + 2)
        WHEN DAYOFWEEK(@zi)=5 THEN (@n-3 +(FLOOR(((@n-3)-0.5)/5)+1)*2 + 3)
        WHEN DAYOFWEEK(@zi)=6 THEN (@n-4 +(FLOOR(((@n-4)-0.5)/5)+1)*2 + 4)
        WHEN DAYOFWEEK(@zi)=7 THEN (@n-5 +(FLOOR(((@n-5)-0.5)/5)+1)*2 + 5)
    END DAY
);

@zi 是日期。你可以给任何日期。

@n 是您要减去的工作天数。

给出的答案对我不起作用,它有时甚至给出未来的日期,它返回的日期是星期日或其他类似的错误。