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 ;