Możesz spróbować tego:
-
Policz liczbę dni roboczych (wzięło to z tutaj )
SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1)
Daje to 261 dni roboczych na rok 2012.
-
Teraz musisz znać swoje wakacje, które nie są w weekend
SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6
Wynik tego zależy od Twojego świątecznego stołu.
-
Musimy to uzyskać w jednym zapytaniu:
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)
To powinno być to.
Edycja:Pamiętaj, że działa to poprawnie tylko wtedy, gdy data zakończenia jest późniejsza niż data rozpoczęcia.