sql >> Databáze >  >> RDS >> Mysql

Jak počítat rozdíl v datech kromě víkendů a svátků v MySQL

Možná budete chtít zkusit toto:

  1. Spočítejte počet pracovních dnů (převzato z zde )

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

    To vám dává 261 pracovních dnů pro rok 2012.

  2. Nyní musíte znát své svátky, které nejsou o víkendu

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

    Výsledek závisí na vašem svátečním stole.

  3. Potřebujeme to získat v jednom dotazu:

    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)

    Tohle by mělo být ono.

Upravit:Uvědomte si prosím, že to funguje správně, pouze pokud je datum ukončení vyšší než datum zahájení.



  1. Jak zřetězit řetězce na serveru SQL pomocí CONCAT()

  2. Přidejte jedinečné omezení ke kombinaci dvou sloupců

  3. Jak skrýt dekoraci sady výsledků ve výstupu Psql

  4. Jak znovu vytvořit nekonzistentní MySQL Slave?