Eu tive essa consulta com um aplicativo de calendário que escrevi uma vez. Acho que usei algo assim:
... WHERE new_start < existing_end
AND new_end > existing_start;
ATUALIZAÇÃO Isso definitivamente deve funcionar ((ns, ne, es, ee) =(new_start, new_end, existing_start, existing_end)):
- ns - ne - es - ee:não se sobrepõe e não corresponde (porque ne
- ns - es - ne - ee:sobreposições e correspondências
- es - ns - ee - ne:sobreposições e correspondências
- es - ee - ns - ne:não se sobrepõe e não corresponde (porque ns> ee)
- es - ns - ne - ee:sobreposições e correspondências
- ns - es - ee - ne:sobreposições e correspondências
Aqui está um violino