これについて100%確信はありませんが、このクエリはかなり近いはずだと思います:
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
@ starttime、@ endtime、@ equipIDを、ユーザーが入力した適切な機器IDと開始時刻と終了時刻に置き換えます。このクエリが結果を返さない場合は、時間の競合は発生しないはずです。
基本的に、これらの3つのシナリオをチェックします。ここで、*は開始時間と終了時間、-は未使用時間、|は未使用時間です。他の誰かが使用している時間です:
-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------