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

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

Susan Sarandon
Susan Sarandon原創
2024-11-02 22:39:03586瀏覽

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

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