Maison > base de données > tutoriel mysql > le corps du texte

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

DDD
Libérer: 2024-11-02 10:06:02
original
205 Les gens l'ont consulté

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);
Copier après la connexion

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;
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal