Estoy usando PHP/MySQL y voy sobre la base de que se puede ejecutar una consulta y si 'hay' resultados coincidentes entonces, falla, si 'no hay' resultados coincidentes entonces inserte.
Bueno, prueba esto. Aquí :date:
es la fecha de la entrada que va a agregar y :start-time:
y :finish-time:
son sus horas de inicio y finalización respectivamente.
SELECT EXISTS (
SELECT
1
FROM
TableName
WHERE
`date` = :date: AND
( :start-time: BETWEEN startTime AND finishTime OR
:finish-time: BETWEEN startTime AND finishTime OR
startTime BETWEEN :start-time: AND :finish-time:
)
) AS `Clash`