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