Maison > base de données > tutoriel mysql > Comment calculer les jours ouvrables entre les dates dans MySQL, hors week-end ?

Comment calculer les jours ouvrables entre les dates dans MySQL, hors week-end ?

Susan Sarandon
Libérer: 2024-11-02 22:39:03
original
583 Les gens l'ont consulté

How to Calculate Business Days Between Dates in MySQL Excluding Weekends?

Calcul des jours ouvrables entre les dates dans MySQL hors week-ends

Pour vérifier la différence de jours entre deux dates tout en excluant les week-ends, nous utilisons WEEKDAY de MySQL () fonction. Cette fonction détermine le jour de la semaine pour une date donnée, la semaine commençant par dimanche. Sur cette base, nous pouvons concevoir une fonction personnalisée qui répond à nos besoins spécifiques.

Création de la fonction TOTAL_WEEKDAYS() :

Nous établissons une fonction nommée TOTAL_WEEKDAYS() qui accepte deux paramètres DATE, date1 et date2. Cette fonction calcule méticuleusement la différence entre les jours de la semaine, en tenant compte des jours de week-end et des cas extrêmes :

CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT
RETURN ABS(DATEDIFF(date2, date1)) + 1  -- Total days
     - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),  -- Weekdays between
                    ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
     - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)  -- Account for edge case
     - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);  -- Account for edge case
Copier après la connexion

Utilisation et tests :

Pour utiliser cette fonction, nous proposons deux Variables DATE, date1 et date2, pour lesquelles on souhaite trouver la différence en jours ouvrés. La sortie exclura les week-ends :

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') AS weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') AS weekdays2;
Copier après la connexion

Résultat :

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |
Copier après la connexion

Dans cet exemple, avec une date de début de « 2013-08-03 » et un date de fin du '2013-08-21', il y a 13 jours ouvrables. La fonction exclut avec précision les jours de week-end dans son calcul.

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