Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć różnicę dat z wyłączeniem weekendów i świąt w MySQL?

Możesz spróbować tego:

  1. 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.

  2. 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.

  3. 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz, jeśli istnieje jeszcze wstawić?

  2. OpenSSL - błąd 18 przy wyszukiwaniu głębokości 0:samopodpisany certyfikat

  3. Usuwanie zduplikowanych wierszy z tabeli

  4. Pobierz ostatnio wstawiony identyfikator automatycznego przyrostu w mysql

  5. Tabela MySQL z kolumną varchar jako kluczem obcym