首頁 >資料庫 >mysql教程 >如何在沒有內建函數的情況下計算 MySQL 中兩個日期之間的工作日?

如何在沒有內建函數的情況下計算 MySQL 中兩個日期之間的工作日?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-16 17:56:10214瀏覽

How to Calculate Working Days Between Two Dates in MySQL Without a Built-in Function?

在MySQL中計算兩個日期之間工作日的方法

許多流行的電子表格程序,例如Excel,都提供NETWORKDAYS()函數來計算兩個日期之間工作日的天數。但是,MySQL沒有類似的內建函數。

解:數學表達式

要在MySQL中計算兩個日期之間工作日的天數,可以使用以下表達式:

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>

解釋:

  • DATEDIFF(@E, @S):計算結束日期(@E)和開始日期(@S)之間的天數差。
  • DIV 7:將差值除以7以獲得日期之間的周數。
  • 5:將週數乘以5以獲得工作日的天數。
  • MID():根據開始日期和結束日期從字串中提取相關的數字子集。表達式中使用的特定字串是根據不同開始日期和結束日期組合之間工作日的天數建立的。

假設與限制:

  • 結束日期(@E)不能早於開始日期(@S)。
  • 此函數忽略假日。
  • 此表達式假設星期一是一週的第一天。

範例:

要計算'2023-03-06'(@S)和'2023-03-10'(@E)之間工作日的天數,可以使用以下查詢:

<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>

此查詢將傳回兩個日期之間工作日的天數,即5。

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

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