Tôi không chắc chắn 100% về điều này, nhưng tôi nghĩ rằng truy vấn này khá gần gũi:
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
Thay thế @starttime, @endtime &@equipID bằng id thiết bị thích hợp và thời gian bắt đầu &kết thúc do người dùng nhập. Nếu truy vấn này không trả về kết quả thì sẽ không có xung đột về thời gian.
Về cơ bản, nó kiểm tra 3 trường hợp này, trong đó*là thời gian bắt đầu và kết thúc của bạn, - là thời gian không sử dụng và | đã đến lúc nó được người khác sử dụng:
-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------