Maison > base de données > tutoriel mysql > Comment calculer les jours ouvrables entre deux dates dans MySQL sans fonction intégrée ?

Comment calculer les jours ouvrables entre deux dates dans MySQL sans fonction intégrée ?

Mary-Kate Olsen
Libérer: 2025-01-16 17:56:10
original
206 Les gens l'ont consulté

How to Calculate Working Days Between Two Dates in MySQL Without a Built-in Function?

Comment calculer les jours ouvrés entre deux dates dans MySQL

De nombreux tableurs populaires, tels qu'Excel, fournissent la fonction NETWORKDAYS() pour calculer le nombre de jours ouvrables entre deux dates. Cependant, MySQL n'a pas de fonction intégrée similaire.

Solution : Expression mathématique

Pour calculer le nombre de jours ouvrés entre deux dates dans MySQL, vous pouvez utiliser l'expression suivante :

<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

Explication :

  • DATEDIFF(@E, @S) : Calcule la différence en jours entre la date de fin (@E) et la date de début (@S).
  • DIV 7 : Divisez la différence par 7 pour obtenir le nombre de semaines entre les dates.
  • 5 : Multipliez le nombre de semaines par 5 pour obtenir le nombre de jours ouvrés.
  • MID() : extrayez le sous-ensemble de nombres pertinent de la chaîne en fonction de la date de début et de la date de fin. La chaîne spécifique utilisée dans l'expression est construite à partir du nombre de jours ouvrables entre différentes combinaisons de dates de début et de fin.

Hypothèses et limites :

  • La date de fin (@E) ne peut pas être antérieure à la date de début (@S).
  • Cette fonction ignore les jours fériés.
  • Cette expression suppose que lundi est le premier jour de la semaine.

Exemple :

Pour calculer le nombre de jours ouvrables entre le '2023-03-06' (@S) et le '2023-03-10' (@E), vous pouvez utiliser la requête suivante :

<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>
Copier après la connexion

Cette requête renverra le nombre de jours ouvrés entre deux dates, soit 5.

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