Dias domingos y feriados entre dos fechas MYSQL
Calculo de los días domingos y festivos en Mysql. Suponiendo que DIASFESTIVOS es una tabla como la siguiente
SET @Inicio := '2017-12-01';
SET @Fin := '2017-12-26';
SELECT
@Inicio,
@Fin,
DATEDIFF(@Fin, @Inicio) AS Dias
,IFNULL(ROUND(((UNIX_TIMESTAMP(@Fin) - UNIX_TIMESTAMP(@Inicio)) / (24 * 60 * 60) - 7 + WEEKDAY(@Inicio) - WEEKDAY(@Fin)) / 7) + IF(WEEKDAY(@Inicio) <= 6,
1,
0) + IF(WEEKDAY(@Fin) >= 6,
1,
0),
'0') AS Domingos
,(SELECT COUNT(Fecha) FROM DIASFESTIVOS
WHERE Fecha BETWEEN @Inicio AND @Fin
AND WEEKDAY(Fecha) <> 6
) AS Festivos
;
El resultado sería este.
Happy Coding!
+-------------+----------------+------------------+ |Id_diafestivo| Dia_festivo | Fecha | +-------------+----------------+------------------+ | 1 | un dia festivo | 2017-12-21 | | 2 | navidad | 2017-12-25 | | 3 | muertos | 2017-10-02 | +-------------+----------------+------------------+
SET @Inicio := '2017-12-01';
SET @Fin := '2017-12-26';
SELECT
@Inicio,
@Fin,
DATEDIFF(@Fin, @Inicio) AS Dias
,IFNULL(ROUND(((UNIX_TIMESTAMP(@Fin) - UNIX_TIMESTAMP(@Inicio)) / (24 * 60 * 60) - 7 + WEEKDAY(@Inicio) - WEEKDAY(@Fin)) / 7) + IF(WEEKDAY(@Inicio) <= 6,
1,
0) + IF(WEEKDAY(@Fin) >= 6,
1,
0),
'0') AS Domingos
,(SELECT COUNT(Fecha) FROM DIASFESTIVOS
WHERE Fecha BETWEEN @Inicio AND @Fin
AND WEEKDAY(Fecha) <> 6
) AS Festivos
;
El resultado sería este.
Happy Coding!