Exclusion des week-ends dans les calculs de différence de dates : une solution MySQL
Pour calculer avec précision la différence entre deux dates, à l'exclusion des week-ends, les utilisateurs de MySQL recherchent souvent conseils. La fonction DATEDIFF standard, bien qu'utile pour les différences de dates de base, ne suffit pas lorsque les week-ends doivent être omis.
Pour résoudre ce problème, une fonction personnalisée peut être créée à l'aide de la fonction WEEKDAY. Voici comment :
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);
Cette fonction utilise plusieurs fonctions MySQL :
En combinant ces fonctions, la fonction TOTAL_WEEKDAYS calcule la différence absolue entre les deux dates d'entrée, soustrait le nombre de samedis et de dimanches dans la plage et ajuste les jours au début et à la fin de la plage. .
Exemple d'utilisation :
Pour calculer la différence entre deux dates, hors week-end :
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 |
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!