在日期差异计算中排除周末:MySQL 解决方案
为了准确计算两个日期之间的差异(排除周末),MySQL 用户经常寻求指导。标准 DATEDIFF 函数虽然对于基本日期差异很有用,但在需要省略周末时就显得不够用了。
要解决此问题,可以使用 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);
此函数使用多个 MySQL 函数:
通过组合这些函数,TOTAL_WEEKDAYS 函数计算两个输入日期之间的绝对差,减去范围内星期六和星期日的数量,并调整范围开始和结束的天数.
用法示例:
计算两个日期之间的差异(不包括周末):
SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') AS weekdays1, TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') AS weekdays2;
结果:
| WEEKDAYS1 | WEEKDAYS2 | ------------------------- | 13 | 13 |
以上是如何在MySQL中计算排除周末的日期差异?的详细内容。更多信息请关注PHP中文网其他相关文章!