sql >> Database teknologi >  >> RDS >> Mysql

Tjek overlapning af datointervaller i MySQL

Jeg havde sådan en forespørgsel med en kalenderapplikation, jeg engang skrev. Jeg tror, ​​jeg brugte noget som dette:

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

OPDATERING Dette burde helt sikkert fungere ((ns, ne, es, ee) =(ny_start, ny_slut, eksisterende_start, eksisterende_slut)):

  1. ns - ne - es - ee:overlapper ikke og matcher ikke (fordi ne
  2. ns - es - ne - ee:overlapninger og matcher
  3. es - ns - ee - ne:overlapninger og matcher
  4. es - ee - ns - ne:overlapper ikke og matcher ikke (fordi ns> ee)
  5. es - ns - ne - ee:overlapninger og matcher
  6. ns - es - ee - ne:overlapninger og matcher

Her er en violin



  1. Sådan undgår du MySQL 'Deadlock fundet, når du forsøger at få lås; prøv at genstarte transaktion'

  2. Sådan fungerer Cot() i PostgreSQL

  3. Gendannelseskrav før sikkerhedskopiering

  4. Endnu en grund til at bruge NOEXPAND-tip i Enterprise Edition