Sto usando PHP/MySQL e sto basandomi sul fatto che una query può essere eseguita e se "ci sono" risultati corrispondenti, fallisci, se "non ci sono" risultati corrispondenti, inserisci.
Bene, prova questo. Qui :date:
è la data della voce che stai per aggiungere e :start-time:
e :finish-time:
sono rispettivamente l'ora di inizio e di fine.
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`