Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment compter la différence de date hors week-end et jours fériés dans MySQL

Vous voudrez peut-être essayer ceci :

  1. Comptez le nombre de jours ouvrables (tiré de ici )

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

    Cela vous donne 261 jours ouvrables pour 2012.

  2. Maintenant, vous devez connaître vos vacances qui ne sont pas un week-end

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

    Le résultat dépend de votre table de vacances.

  3. Nous devons obtenir cela en une seule requête :

    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)

    Ça devrait être ça.

Modifier :Veuillez noter que cela ne fonctionne correctement que si votre date de fin est supérieure à votre date de début.