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

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

DDD
發布: 2024-11-02 10:06:02
原創
269 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板