Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So zählen Sie Datumsunterschiede ohne Wochenende und Feiertage in MySQL

Vielleicht möchten Sie Folgendes versuchen:

  1. Zählen Sie die Anzahl der Arbeitstage (entnommen aus hier )

    SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1)

    Das ergibt 261 Arbeitstage für 2012.

  2. Jetzt müssen Sie Ihre Feiertage kennen, die nicht auf ein Wochenende fallen

    SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6

    Das Ergebnis hängt von Ihrer Feiertagstabelle ab.

  3. Wir müssen das in einer Abfrage bekommen:

    SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1) - (SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6)

    Das sollte es sein.

Bearbeiten:Bitte beachten Sie, dass dies nur richtig funktioniert, wenn Ihr Enddatum nach Ihrem Startdatum liegt.