sql >> Databasteknik >  >> RDS >> Mysql

Räkna dagar mellan två datum, exklusive helger (endast MySQL)

Testa helt enkelt med en enkel funktion :

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

Testa:

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') weekdays2;

Resultat:

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |


  1. MySQL-replikering med ProxySQL på WHM/cPanel-servrar:Del ett

  2. SQL inte lika med () Operator för nybörjare

  3. MySQL CONVERT_TZ()

  4. Mätning av faktisk MySQL-frågetid