首頁  >  文章  >  資料庫  >  如何計算MySQL中兩個日期之間的工作天數(不包括週末)?

如何計算MySQL中兩個日期之間的工作天數(不包括週末)?

DDD
DDD原創
2024-11-02 10:06:02170瀏覽

How to Calculate the Number of Weekdays Between Two Dates in MySQL, Excluding Weekends?

計算MySQL 中不包括週末的日期之間的天數

在MySQL 中,使用DATEDIFF 函數計算兩個日期之間的差異非常簡單。然而,從計算中排除週末(週六和週日)可能具有挑戰性。

為了實現這一點,我們可以利用 WEEKDAY 函數和自訂函數來簡化流程。

建立自訂函數

我們可以建立一個名為TOTAL_WEEKDAYS 的函數,它接受兩個日期參數(date1 和date2)並傳回它們之間的工作日數:

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);

函數計算兩個日期之間的絕對差,加一以包含開始日期和結束日期,然後減去該時間段內出現的周末總數。額外的減法考慮了開始或結束日期為週末的情況。

用法示例

要使用TOTAL_WEEKDAYS 函數,只需使用所需的日期調用它:

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') weekdays2;

結果

WEEKDAYS1 WEEKDAYS2
13 13

如您所見,該函數準確計算給定日期之間的工作日數,不包括週末。

以上是如何計算MySQL中兩個日期之間的工作天數(不包括週末)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn