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!