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>
Comment ça marche :
Cette expression combine astucieusement plusieurs fonctions MySQL :
DATEDIFF(@E, @S)
: Calcule le nombre total de jours entre les deux dates.
DIV 7
: Divise le total des jours par 7, fournissant le nombre de semaines complètes.
*` 5` :** Multiplie le nombre de semaines par 5 pour tenir compte des cinq jours ouvrables de chaque semaine.
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.
*`7 WEEKDAY(@S) WEEKDAY(@E) 1` :** Ce calcul génère un index dans la chaîne de recherche.
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!