首頁 > 資料庫 > mysql教程 > 如何在不考慮假日的情況下計算 MySQL 中兩個日期之間的工作日?

如何在不考慮假日的情況下計算 MySQL 中兩個日期之間的工作日?

Mary-Kate Olsen
發布: 2025-01-16 18:13:14
原創
300 人瀏覽過

How Can I Calculate Business Days Between Two Dates in MySQL Without Considering Holidays?

在 MySQL 中高效計算工作日(不包括週末)

許多應用程式需要計算兩個日期之間的工作日數。雖然電子表格軟體通常為此提供內建函數(例如 NETWORKDAYS),但 MySQL 缺乏直接的等效函數。 本文提供了一個簡潔的 MySQL 表達式來完成此任務,並專注於排除週末。 請注意,此解決方案考慮假期。

MySQL 表達式

要確定日期 @S(開始日期)和 @E(結束日期)之間的工作日,請使用以下命令:

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
登入後複製

工作原理:

這個表達式巧妙地結合了幾個 MySQL 函式:

  1. DATEDIFF(@E, @S): 計算兩個日期之間的總天數。

  2. DIV 7: 將總天數除以 7,得到完整的周數。

  3. *` 5`:** 將週數乘以 5 以計算每週的五個工作天。

  4. WEEKDAY(@S)WEEKDAY(@E): 決定開始日期和結束日期是一週中的哪一天(0 表示星期日,1 表示星期一等)。

  5. *`7 WEEKDAY(@S) WEEKDAY(@E) 1`:** 此計算會產生尋找字串的索引。

  6. MID('0123444401233334012222340111123400012345001234550', ..., 1): MID 函數使用計算出的索引從巧妙建構的字串中提取單一數字。該數字表示完整週計算中未捕獲的剩餘工作日(考慮開始和結束時的部分週)。

此方法提供了一種快速有效的方法來估算 MySQL 中的工作日(不包括週末),而無需處理假期的複雜性。 對於包括假期在內的更全面的解決方案,需要一種涉及假期表的更複雜的方法。

以上是如何在不考慮假日的情況下計算 MySQL 中兩個日期之間的工作日?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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