Ver Mensaje Individual
  #2  
Antiguo 20-11-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Creo que la tabla es buena idea, pues los dias festivos son muy arbitrarios y cambian de región a región. Para contar los días laborables entre dos fechas Inicio y Final puedes

1. Contar los días entre esas dos fechas (función DaysBetween)
2. Descontar los fines de semanas (la función WeeksBetween cuenta las semanas entre dos fechas, que debe ser más o menos lo mismo que el número de fines de semana)
3. Descontar los días feriados

Para el último paso podrías hacer un select de tu tabla de dís festivos:

Código SQL [-]
select count(*) from festivos where fecha between :inicio and :final

y descontar el número que te devuelva. Aunque quiza también hay que considerar que undía festivo puede caer en fin de semana y no puedes descontarlo dos veces. Según el motor de datos que uses podrías filtrar la consulta anterior. POr ejemplo, en MySQL puedes hacer eso:

Código SQL [-]
select count(*) from festivos where fecha between :inicio and :final and dayofweek(fecha) between 2 and 6 /* entre lunes y viernes */

// Saludos
Responder Con Cita