在日期差異計算中排除週末: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 函數:
透過組合這些函數,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中文網其他相關文章!