首页 > 数据库 > mysql教程 > 如何计算MySQL中日期之间的工作日(不包括周末)?

如何计算MySQL中日期之间的工作日(不包括周末)?

Susan Sarandon
发布: 2024-11-02 22:39:03
原创
504 人浏览过

How to Calculate Business Days Between Dates in MySQL Excluding Weekends?

计算 MySQL 中不包括周末的日期之间的工作日

为了确定两个日期之间的天数差异(不包括周末),我们使用 MySQL 的 WEEKDAY () 功能。此函数确定给定日期是星期几,即从星期日开始的一周。在此基础上,我们可以设计一个满足我们特定要求的自定义函数。

创建 TOTAL_WEEKDAYS() 函数:

我们建立一个名为 TOTAL_WEEKDAYS() 的函数,接受两个 DATE 参数:date1 和 date2。此函数精心计算工作日之间的差异,考虑周末和边缘情况:

CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT
RETURN ABS(DATEDIFF(date2, date1)) + 1  -- Total days
     - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),  -- Weekdays between
                    ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
     - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)  -- Account for edge case
     - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);  -- Account for edge case
登录后复制

使用和测试:

要使用此函数,我们提供了两个DATE 变量 date1 和 date2,我们希望找到工作日差异。输出将排除周末:

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 |
登录后复制

在此示例中,开始日期为“2013-08-03”,结束日期“2013-08-21”,还有 13 个工作日。该函数在计算中准确地排除了周末。

以上是如何计算MySQL中日期之间的工作日(不包括周末)?的详细内容。更多信息请关注PHP中文网其他相关文章!

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