首頁  >  文章  >  資料庫  >  如何在MySQL中計算排除週末的日期差異?

如何在MySQL中計算排除週末的日期差異?

Linda Hamilton
Linda Hamilton原創
2024-11-01 05:27:27621瀏覽

How to Calculate Date Differences Excluding Weekends in MySQL?

在日期差異計算中排除週末:MySQL 解決方案

為了準確計算兩個日期之間的差異(排除週末), MySQL 使用者經常尋求指導。標準 DATEDIFF 函數雖然對於基本日期差異很有用,但在需要省略週末時就顯得不夠用了。

要解決此問題,可以使用 WEEKDAY 函數建立自訂函數。操作方法如下:

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);

此函數使用多個 MySQL 函數:

  • ABS:傳回數字的絕對值。
  • DATEDIFF:決定之間的差異兩個日期。
  • ADDDATE:為日期加上指定的天數。
  • DAYOFWEEK:取得給定日期的星期幾,其中 1 代表星期日,7 代表星期六。

透過組合這些函數,TOTAL_WEEKDAYS 函數計算兩個輸入日期之間的絕對差,減去範圍內星期六和星期日的數量,並調整範圍開始和結束的天數.

用法示例:

計算兩個日期之間的差異(不包括週末):

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 |

以上是如何在MySQL中計算排除週末的日期差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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