Maison >base de données >tutoriel mysql >Comment calculer le nombre de jours de la semaine entre deux dates dans MySQL, hors week-end ?

Comment calculer le nombre de jours de la semaine entre deux dates dans MySQL, hors week-end ?

DDD
DDDoriginal
2024-11-02 10:06:02267parcourir

How to Calculate the Number of Weekdays Between Two Dates in MySQL, Excluding Weekends?

Calcul des jours entre les dates hors week-end dans MySQL

Dans MySQL, calculer la différence entre deux dates est simple à l'aide de la fonction DATEDIFF. Cependant, exclure les week-ends (samedi et dimanche) de ce calcul peut être difficile.

Pour y parvenir, nous pouvons utiliser la fonction WEEKDAY et une fonction personnalisée pour simplifier le processus.

Création d'une fonction personnalisée

Nous pouvons créer une fonction appelée TOTAL_WEEKDAYS qui accepte deux paramètres de date (date1 et date2) et renvoie le nombre de jours de la semaine entre eux :

CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT
RETURN ABS(DATEDIFF(date2, date1)) + 1
     - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
                    ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
     - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)
     - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);

La fonction calcule la différence absolue entre les deux dates, en ajoute une pour inclure les dates de début et de fin, puis soustrait le nombre total de week-ends qui surviennent au cours de cette période. Les soustractions supplémentaires tiennent compte des cas où la date de début ou de fin tombe un week-end.

Exemple d'utilisation

Pour utiliser la fonction TOTAL_WEEKDAYS, appelez-la simplement avec les dates souhaitées :

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') weekdays2;

Résultats

WEEKDAYS1 WEEKDAYS2
13 13

Comme vous pouvez le constater, la fonction calcule avec précision le nombre de jours de la semaine entre les dates données, hors week-end.

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