Maison  >  Article  >  base de données  >  Comment calculer les différences de date hors week-end dans MySQL ?

Comment calculer les différences de date hors week-end dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 05:27:27526parcourir

How to Calculate Date Differences Excluding Weekends in MySQL?

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 :

  • ABS : Renvoie la valeur absolue du nombre.
  • DATEDIFF : Détermine la différence entre deux dates.
  • ADDDATE : ajoute un nombre spécifié de jours à une date.
  • DAYOFWEEK : obtient le jour de la semaine pour une date donnée, 1 représentant le dimanche et 7 représentant le samedi.

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!

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