首页  >  文章  >  数据库  >  如何在MySQL中计算排除周末的日期差异?

如何在MySQL中计算排除周末的日期差异?

Linda Hamilton
Linda Hamilton原创
2024-11-01 05:27:27526浏览

How to Calculate Date Differences Excluding Weekends in MySQL?

在日期差异计算中排除周末: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 函数:

  • ABS:返回数字的绝对值。
  • DATEDIFF:确定之间的差异两个日期。
  • ADDDATE:为日期添加指定的天数。
  • DAYOFWEEK:获取给定日期的星期几,其中 1 代表星期日,7 代表星期六。

通过组合这些函数,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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn