ปัญหามันอยู่ที่การออกแบบตารางให้ถูกต้องครับ จากนั้นก็สามารถ Query หาช่วงเวลาซ้ำได้ครับ หลัก ๆ ก็ BETWEEN นี่แหละครับ ผมมีตัวอย่างให้ดูครับ
Code
$bookStart = "2010-07-10 09:30:00";
$bookEnd = "2010-07-10 12:00:00";
SELECT * FROM booking WHERE ($bookStart BETWEEN time1 and time2) or ($bookEnd BETWEEN time1 and time2)
จาก code นี้ให้คุณใช้รูปแบบนี้เลยครับ แต่ให้ตรวจสอบ Format ของ DateTime ให้ถูกต้องด้วยครับ