Maison > base de données > tutoriel mysql > Comment puis-je calculer les jours ouvrables entre deux dates dans MySQL sans tenir compte des jours fériés ?

Comment puis-je calculer les jours ouvrables entre deux dates dans MySQL sans tenir compte des jours fériés ?

Mary-Kate Olsen
Libérer: 2025-01-16 18:13:14
original
300 Les gens l'ont consulté

How Can I Calculate Business Days Between Two Dates in MySQL Without Considering Holidays?

Calculer efficacement les jours ouvrables (hors week-end) dans MySQL

De nombreuses applications nécessitent de calculer le nombre de jours ouvrés entre deux dates. Alors que les tableurs fournissent souvent des fonctions intégrées à cet effet (comme NETWORKDAYS), MySQL n'a pas d'équivalent direct. Cet article présente une expression MySQL concise pour y parvenir, en se concentrant sur l'exclusion des week-ends. Notez que cette solution ne tient compte des jours fériés.

L'expression MySQL

Pour déterminer les jours ouvrables entre les dates @S (date de début) et @E (date de fin), utilisez ce qui suit :

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Copier après la connexion

Comment ça marche :

Cette expression combine astucieusement plusieurs fonctions MySQL :

  1. DATEDIFF(@E, @S) : Calcule le nombre total de jours entre les deux dates.

  2. DIV 7 : Divise le total des jours par 7, fournissant le nombre de semaines complètes.

  3. *` 5` :** Multiplie le nombre de semaines par 5 pour tenir compte des cinq jours ouvrables de chaque semaine.

  4. WEEKDAY(@S) et WEEKDAY(@E) : Déterminez le jour de la semaine (0 pour dimanche, 1 pour lundi, etc.) pour les dates de début et de fin.

  5. *`7 WEEKDAY(@S) WEEKDAY(@E) 1` :** Ce calcul génère un index dans la chaîne de recherche.

  6. MID('0123444401233334012222340111123400012345001234550', ..., 1) : La fonction MID utilise l'index calculé pour extraire un seul chiffre d'une chaîne intelligemment construite. Ce chiffre représente les jours ouvrables restants qui ne sont pas pris en compte par le calcul des semaines complètes (en tenant compte des semaines partielles au début et à la fin).

Cette méthode offre un moyen rapide et efficace de approximer les jours ouvrables dans MySQL, hors week-end, sans la complexité de la gestion des jours fériés. Pour une solution plus globale incluant les fêtes, une approche plus élaborée impliquant une table de fêtes serait nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal