計算MySQL 中不包括週末的日期之間的天數
在MySQL 中,使用DATEDIFF 函數計算兩個日期之間的差異非常簡單。然而,從計算中排除週末(週六和週日)可能具有挑戰性。
為了實現這一點,我們可以利用 WEEKDAY 函數和自訂函數來簡化流程。
建立自訂函數
我們可以建立一個名為TOTAL_WEEKDAYS 的函數,它接受兩個日期參數(date1 和date2)並傳回它們之間的工作日數:
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);
函數計算兩個日期之間的絕對差,加一以包含開始日期和結束日期,然後減去該時間段內出現的周末總數。額外的減法考慮了開始或結束日期為週末的情況。
用法示例
要使用TOTAL_WEEKDAYS 函數,只需使用所需的日期調用它:
SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') weekdays1, TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') weekdays2;
結果
WEEKDAYS1 | WEEKDAYS2 |
---|---|
13 | 13 |
如您所見,該函數準確計算給定日期之間的工作日數,不包括週末。
以上是如何計算MySQL中兩個日期之間的工作天數(不包括週末)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!