Ho avuto una domanda del genere con un'applicazione di calendario che ho scritto una volta. Penso di aver usato qualcosa del genere:
... WHERE new_start < existing_end
AND new_end > existing_start;
AGGIORNAMENTO Questo dovrebbe sicuramente funzionare ((ns, ne, es, ee) =(nuovo_inizio, nuova_fine, esistente_inizio, esistente_fine)):
- ns - ne - es - ee:non si sovrappone e non corrisponde (perché ne
- ns - es - ne - ee:sovrapposizioni e corrispondenze
- es - ns - ee - ne:sovrapposizioni e corrispondenze
- es - ee - ns - ne:non si sovrappone e non corrisponde (perché ns> ee)
- es - ns - ne - ee:sovrapposizioni e corrispondenze
- ns - es - ee - ne:sovrapposizioni e corrispondenze
Ecco un violino