sql >> Databasteknik >  >> RDS >> Mysql

Hur man räknar datumskillnaden exklusive helger och helgdagar i MySQL

Du kanske vill prova detta:

  1. Räkna antalet arbetsdagar (tog det från här )

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

    Detta ger dig 261 arbetsdagar för 2012.

  2. Nu behöver du veta dina helgdagar som inte är på en helg

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

    Resultatet av detta beror på ditt semesterbord.

  3. Vi måste få det i en fråga:

    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)

    Detta borde vara det.

Redigera:Tänk på att detta bara fungerar korrekt om ditt slutdatum är högre än ditt startdatum.



  1. Hur man aktiverar komprimering på en befintlig tabell i SQL Server (T-SQL)

  2. Hur man ändrar konfigurationsinställningarna för Databas Mail i SQL Server (T-SQL)

  3. Lägga till ett FULLTEXT-index i Doktrin 2 med hjälp av anteckningar?

  4. Importera Excel-data i mysql-databas