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

Seleccione valores entre la fecha de inicio y la fecha de finalización

Leí este problema buscando la superposición de rangos:

por lo que tiene datos en el rango:T1 a T3. Y buscando superposición con el rango T2 a T4. Ya que se superponen, lo desea. Sin embargo, si los datos son de T1 a T3 y el rango es de T4 a T5... no hay superposición, por lo que no desea.

Puede hacerlo con esta consulta:

Select id 
  from eventos_sapo 
 where startDate <= '2015-02-14'
   AND endDate >= '2013-01-03';

Entonces, si comenzó después de la fecha indicada (14 de febrero de 2015), no lo incluya. O si terminó antes del 3 de enero de 2013... no lo incluya. Incluya todo lo demás, ya que se superpone:

Como 1 ejemplo:los datos finalizan después de la fecha de inicio del rango dado, y la fecha de inicio de los datos es anterior a la finalización, por lo que es uno de los siguientes casos:

Data:           |---|
Given range:      |---|

Data:           |-------|
Given range:      |---|

Data:             |---|
Given range:    |---|

Data:             |---|
Given range:    |-------|