Calcul des jours ouvrables entre les dates dans MySQL hors week-ends
Pour vérifier la différence de jours entre deux dates tout en excluant les week-ends, nous utilisons WEEKDAY de MySQL () fonction. Cette fonction détermine le jour de la semaine pour une date donnée, la semaine commençant par dimanche. Sur cette base, nous pouvons concevoir une fonction personnalisée qui répond à nos besoins spécifiques.
Création de la fonction TOTAL_WEEKDAYS() :
Nous établissons une fonction nommée TOTAL_WEEKDAYS() qui accepte deux paramètres DATE, date1 et date2. Cette fonction calcule méticuleusement la différence entre les jours de la semaine, en tenant compte des jours de week-end et des cas extrêmes :
CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE) RETURNS INT RETURN ABS(DATEDIFF(date2, date1)) + 1 -- Total days - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY), -- Weekdays between ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2 - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1) -- Account for edge case - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7); -- Account for edge case
Utilisation et tests :
Pour utiliser cette fonction, nous proposons deux Variables DATE, date1 et date2, pour lesquelles on souhaite trouver la différence en jours ouvrés. La sortie exclura les week-ends :
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 |
Dans cet exemple, avec une date de début de « 2013-08-03 » et un date de fin du '2013-08-21', il y a 13 jours ouvrables. La fonction exclut avec précision les jours de week-end dans son calcul.
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!