sql >> Database >  >> RDS >> Mysql

Hoe het datumverschil te tellen, exclusief weekend en feestdagen in MySQL

Misschien wil je dit proberen:

  1. Tel het aantal werkdagen (nam het van 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)

    Dit geeft u 261 werkdagen voor 2012.

  2. Nu moet u uw vakanties weten die niet in het weekend vallen

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

    Het resultaat hiervan is afhankelijk van uw feesttafel.

  3. We moeten dat in één query krijgen:

    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)

    Dit zou het moeten zijn.

Bewerken:Houd er rekening mee dat dit alleen goed werkt als je einddatum hoger is dan je startdatum.



  1. Een kolom bijwerken in MySQL

  2. afbeelding insluiten in html e-mail

  3. ODBC gebruiken met Salesforce en OneLogin Single Sign On (SSO)

  4. Een handvat krijgen voor native Oracle Connection in Hibernate 4 om een ​​opgeslagen proces uit te voeren