sql >> Base de Datos >  >> RDS >> Mysql

Cómo contar la diferencia de fechas excluyendo fines de semana y días festivos en MySQL

Es posible que desee probar esto:

  1. Cuente el número de días hábiles (lo tomé de aquí )

    SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1)

    Esto le da 261 días hábiles para 2012.

  2. Ahora necesitas saber tus vacaciones que no son en fin de semana

    SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6

    El resultado de esto depende de tu mesa de vacaciones.

  3. Necesitamos obtener eso en una consulta:

    SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1) - (SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6)

    Esto debería ser.

Editar:Tenga en cuenta que esto solo funciona correctamente si su fecha de finalización es anterior a su fecha de inicio.