lor*_*o-s 3 mysql datediff date weekend
我需要计算MySQL中两个日期之间的差异(以天为单位),不包括周末(周六和周日).也就是说,天数之差减去周六和周日之间的数量.
目前,我只计算使用日期:
SELECT DATEDIFF('2012-03-18', '2012-03-01')
Run Code Online (Sandbox Code Playgroud)
这个回归17
,但我想排除周末,所以我想12
(因为第3和第4,第10和第11和第17是周末的日子).
我不知道从哪里开始.我知道WEEKDAY()
函数和所有相关函数,但我不知道如何在这种情况下使用它们.
只需使用一个简单的功能尝试:
CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT
RETURN ABS(DATEDIFF(date2, date1)) + 1
- ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
- (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)
- (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);
Run Code Online (Sandbox Code Playgroud)
测试:
SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') weekdays1,
TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') weekdays2;
Run Code Online (Sandbox Code Playgroud)
结果:
| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
| 13 | 13 |
Run Code Online (Sandbox Code Playgroud)