sql >> Database >  >> RDS >> Mysql

Tel dagen tussen twee datums, met uitzondering van weekends (alleen MySQL)

Probeer het gewoon met een eenvoudige functie:

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

Test :

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

Resultaat:

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


  1. Hoe wijzig ik het gegevenstype voor een kolom in MySQL?

  2. Wanneer sorteert SQL Server terugspoelen?

  3. Hoe voer je een in orakel opgeslagen procedure uit?

  4. Hoe een bestand zippen in PL/SQL?