Mysql / MariaDb: trabajar con fechas sin contar con los finnes de semana

bueno luego de batallar bastante rato, como siempre escribo algo al respecto, me toca trabajar con la base de datos Mysql / MariaDb y manejar calendario de dias hábiles (es decir sin contar los finde de semana), intenté ver sin con una querie se podía resolver, llegué a la conclusión que no hay otra manera de hacer una funcion de Mysql que me maneje ese tema (ni a palos lo pongo en el codigo del sistema) el problema es que hay que siempre mantener actualziada la funcion en todos los ambientes donde se trabaja, y eso es un problema

Pero al menor de los males vamos, la necesidad lleva a hacer estas cosas que el motor por si solo no puede resolver

Aqui les comparto el codigo de la funcion, la funcion la oriente a lo que necesitaba, tomo un fecha inicial y quiero saber cual es la fecha resultante luego de sumarle X dias habiles, interesante no ?


DELIMITER $$

DROP FUNCTION IF EXISTS `mm`.`AddWeekDays`$$

CREATE FUNCTION `AddWeekDays`(sdate VARCHAR(50), days INT) RETURNS DATE
BEGIN
  DECLARE wdays, tdiff, counter, thisday SMALLINT;
  DECLARE newdate DATE;
  SET newdate := sdate;
  SET wdays = 1;
  IF days = 0 THEN RETURN newdate; END IF;
  label1: LOOP
    SET thisday = DAYOFWEEK(newdate);

    IF thisday BETWEEN 1 AND 5 THEN SET newdate = DATE_ADD(newdate, INTERVAL 1 DAY);  END IF;
    IF thisday = 6 THEN SET newdate = DATE_ADD(newdate, INTERVAL 3 DAY); END IF;
    IF thisday = 7 THEN SET newdate = DATE_ADD(newdate, INTERVAL 2 DAY); END IF;
   
   
    IF thisday BETWEEN 2 AND 6 THEN SET wdays:= wdays +1; END IF;
   
    IF wdays > days THEN LEAVE label1; END IF;
  END LOOP label1;
  RETURN newdate;
END$$

DELIMITER ;

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

11 + nueve =

Time limit is exhausted. Please reload CAPTCHA.