Idealmente, necesitará dos campos de todos modos:
- Almacenar dos fechas/horas por separado --O--
- Almacenar una fecha/hora y almacenar el tiempo transcurrido
Al revisar sus requisitos, optaría por dos campos de fecha/hora separados; y calcule los días completos/medios días incluyendo (sumando/restando) días festivos.
Mantenga una tabla de configuración separada para definir/configurar la duración máxima/mínima del día.
Realice cualquier cálculo en el día/hora, dentro de la consulta, o, alternativamente, en la interfaz de usuario, según las acciones del usuario, si lo desea.