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

Linda Hamilton
发布: 2024-11-01 05:27:27
原创
619 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板