計算MySQL 中不包括週末的日期之間的工作日
為了確定兩個日期之間的天數差異(不包括週末),我們使用MySQL 的WEEKDAY () 功能。此函數確定給定日期是星期幾,即從星期日開始的一周。在此基礎上,我們可以設計一個滿足我們特定要求的自訂函數。
建立 TOTAL_WEEKDAYS() 函數:
我們建立一個名為 TOTAL_WEEKDAYS() 的函數,接受兩個 DATE 參數:date1 和 date2。此函數精心計算工作日之間的差異,考慮週末和邊緣情況:
CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE) RETURNS INT RETURN ABS(DATEDIFF(date2, date1)) + 1 -- Total days - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY), -- Weekdays between ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2 - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1) -- Account for edge case - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7); -- Account for edge case
使用和測試:
要使用此函數,我們提供了兩個DATE 變數date1 和date2,我們希望找到工作日差異。輸出將排除週末:
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 |
在此範例中,開始日期為“2013-08-03”,結束日期“ 2013-08-21”,還有13 個工作天。該函數在計算中準確地排除了週末。
以上是如何計算MySQL中日期之間的工作日(不包括週末)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!