Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez des valeurs entre la date de début et la date de fin

Je lis ce problème comme la recherche du chevauchement des plages :

vous avez donc des données dans la plage :T1 à T3. Et recherche de chevauchement avec la plage T2 à T4. Puisqu'ils se chevauchent, vous voulez. Cependant, si les données sont T1 à T3 et que la plage est T4 à T5 .. pas de chevauchement, donc ne voulez pas.

Vous pouvez le faire avec cette requête :

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

Donc, s'il a commencé après la date indiquée (14 février 2015), ne l'incluez pas. Ou s'il s'est terminé avant le 3 janvier 2013... ne l'incluez pas. Incluez tout le reste, car il se chevauche :

Comme 1 exemple :les données se terminent après la date de début de la plage donnée, et la date de début des données est antérieure à la fin, c'est donc l'un des cas suivants :

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

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

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

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