Je ne suis pas sûr à 100 %, mais je pense que cette requête devrait être assez proche :
select * from tblEvents
where (@starttime >= start && @starttime <= end) /* Starts while someone else has it */
or (@endtime >= start && @endtime <= end) /* Ends while someone else has it */
or (@startime <= start && @endtime >= end) /* Starts before & ends after someone else has it*/
and equipID = @equipID
Remplacez @starttime, @endtime &@equipID par l'ID d'équipement approprié et les heures de début et de fin saisies par l'utilisateur. Si cette requête ne renvoie aucun résultat, il ne devrait y avoir aucun conflit d'heure.
Fondamentalement, il vérifie ces 3 scénarios, où le *est votre heure de début et de fin, le - est le temps inutilisé et le | il est temps qu'il soit utilisé par quelqu'un d'autre :
-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------