sql >> Base de Datos >  >> RDS >> Mysql

Compruebe la superposición de rangos de fechas en MySQL

Tuve una consulta de este tipo con una aplicación de calendario que escribí una vez. Creo que usé algo como esto:

... WHERE new_start < existing_end
      AND new_end   > existing_start;

ACTUALIZAR Esto definitivamente debería funcionar ((ns, ne, es, ee) =(nuevo_inicio, nuevo_fin, existente_inicio, existente_fin)):

  1. ns - ne - es - ee:no se superpone y no coincide (porque ne
  2. ns - es - ne - ee:superposiciones y coincidencias
  3. es - ns - ee - ne:superposiciones y coincidencias
  4. es - ee - ns - ne:no se superpone y no coincide (porque ns> ee)
  5. es - ns - ne - ee:superposiciones y coincidencias
  6. ns - es - ee - ne:superposiciones y coincidencias

Aquí hay un fiddle