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

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

Susan Sarandon
發布: 2024-11-02 22:39:03
原創
624 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板