Nie jestem tego w 100% pewien, ale myślę, że to zapytanie powinno być całkiem blisko:
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
Zastąp @starttime, @endtime i @equipID odpowiednim identyfikatorem sprzętu oraz godzinami rozpoczęcia i zakończenia wprowadzonymi przez użytkownika. Jeśli to zapytanie nie zwraca żadnych wyników, nie powinno być konfliktów czasowych.
Zasadniczo sprawdza te 3 scenariusze, gdzie *to czas rozpoczęcia i zakończenia, - to czas niewykorzystany, a | czy czas jest używany przez kogoś innego:
-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------