有谁知道如何从MYSQL中的DATE_SUB函数中排除周末?我期待从CURDATE()过去1500个工作日内搜索,但我正在努力解决这个问题?
非常感谢任何指导。
我知道之前在stackoverflow上询问了这个问题(请参阅下面的链接),但我无法让他的解决方案工作
答案 0 :(得分:1)
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
是您要减去的工作日数。
给出的答案对我不起作用,有时甚至会在将来给出日期,它会返回星期日的日期或其他类似的错误。