我知道您可以按日期从日期中减去天数:
SELECT DATE_SUB(DATE "2008-12-25", INTERVAL 3 DAY) as three_days_ago;
但如何减去3 business
天?
答案 0 :(得分:2)
您可以尝试使用CASE
表达式
SELECT
CASE WHEN DAYOFWEEK(date) IN (2, 3, 4) -- Monday, Tuesday, Wednesday
THEN DATE_SUB(date, INTERVAL 5 DAY)
WHEN DAYOFWEEK(date) = 1
THEN DATE_SUB(date, INTERVAL 4 DAY)
ELSE DATE_SUB(date, INTERVAL 3 DAY) END AS three_days_ago
FROM yourTable;
对于星期天,我们需要增加一天才能过去星期六,这是不可能的。同样地,对于周一到周三,我们需要增加两天来覆盖整个周末,这不能计算在内。对于周四到周六,我们可以减去3天,所有这些都是工作日。
答案 1 :(得分:0)
试试这个。它会适用于所有情况。
Empid 01-Jan-2018 02-Jan-2018 03-Jan-2018
1 1 0.5 1
2 0.5 1
3 1