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
Susan Sarandonoriginal
2024-11-02 22:39:03625parcourir

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

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;

Résultat :

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |

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!

Déclaration:
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