Idéalement, vous aurez besoin de deux champs quand même :
- Stocker deux date/heure séparément --OU--
- Stocker une date/heure et stocker le temps écoulé
En examinant vos exigences, j'opterais pour deux champs de date/heure distincts; et calculez les journées complètes/demi-journées, y compris (en ajoutant/en soustrayant) les jours fériés.
Conservez une table de configuration distincte pour définir/configurer la durée max/mini de la journée.
Effectuez tous les calculs sur le jour/l'heure, dans la requête, ou alternativement sur l'interface utilisateur, sur les actions de l'utilisateur - si vous le souhaitez.