Calculer les jours ouvrés entre deux dates dans MySQL
La fonction NETWORKDAYS() d'Excel offre un moyen pratique de déterminer le nombre de jours ouvrables entre deux dates spécifiées. Cependant, MySQL ne dispose pas de fonctions intégrées similaires.
Pour résoudre ce problème, voici une expression MySQL qui peut être utilisée comme alternative :
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
Copier après la connexion
Cette expression contient les calculs suivants :
-
Calculer la différence entre les jours ouvrables : (DATEDIFF (@E, @S) DIV 7) Calculez le nombre de semaines entre la date de début @S et la date de fin @E. Divisez par 7 pour obtenir le nombre de semaines complètes, on le multiplie par 5 pour tenir compte du nombre de jours ouvrables par semaine.
-
Calculez l'indice de début et de fin de journée ouvrable : 7 JOUR SEMAINE (@S) et 7 JOUR SEMAINE (@E) Calculez l'indice journée ouvrable de la date de début et de la date de fin ( Lundi vaut 0, 1 pour mardi, et ainsi de suite). L'ajout de 1 consiste à faire correspondre l'index avec la chaîne numérique décrite ci-dessous.
-
Récupérer le nombre de jours de la semaine : MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) WEEKDAY(@E) 1, 1) Récupère un seul caractère de la chaîne numérique fournie. Ce caractère représente le nombre de jours ouvrés entre la combinaison de jours ouvrés spécifiée.
La chaîne numérique fournie est construite pour représenter le nombre de jours ouvrables entre chaque combinaison de jours ouvrables (du lundi au lundi, du mardi au mardi, etc.). En combinant les index des jours de la semaine et en récupérant les caractères correspondants, nous obtenons le décompte des jours de la semaine.
Hypothèses et limites :
- Cette fonction suppose que @E n'est pas antérieur à @S.
- Il ignore les jours fériés, de sorte que le nombre de jours ouvrables calculé peut ne pas être précis pour les scénarios impliquant des jours fériés.
- La chaîne numérique est codée en dur dans l'expression et peut devoir être mise à jour si les conventions des jours ouvrables diffèrent (par exemple, si le dimanche est considéré comme un jour ouvrable).
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!