Bien le bonsoir très chères clémentines,
J’ai modélisé en base un calendrier. Les entrées sont : les événements de ce calendrier. Voici une entrée :
id ; event_creation_date ; event_end_date
11 ; 2021-01-28 15:15:37 ; 2022-01-11 15:15:37
J’ai mis en place un script qui accepte en entrées : une date de recherche d’événements "search_creation_date" et une date de recherche d’événements "search_end_date". Ce script doit retourner tous les événements qui sont totalement encadrés dans cet intervalle de recherche, ou encore ceux qui sont en partie encadrés (que ce soit parce que l’intervalle de recherche est totalement encadré par l’intervalle de ces événements, ou encore parce qu’une date de recherche est encadrée par l’intervalle de ces événements).
J’ai donc écrit cette requête :
select *, @search_creation_date:="2021-01-26 00:00:00", @search_end_date:="2021-01-30 00:00:00"
from `calendars_events`
where
(@search_creation_date between `event_creation_date` and `event_end_date`) or (@search_end_date between `event_creation_date` and `event_end_date`)
or
(`event_creation_date` between @search_creation_date and @search_end_date) or (`event_end_date` between @search_creation_date and @search_end_date)
Ici la date de création de recherche est en-dehors de l’intervalle de l’événement, mais la date de fin de recherche est bien comprise dans l’intervalle de l’événement. Donc l’événement #11
devrait bien être retourné. Pourtant le résultat de la requête est vide.
Je ne comprends pas pourquoi. J’ai bien vérifié comment MySQL utilise les variables ainsi que la comparaison de date avec between
et tout me semble correct.
Qu’est-ce qui ne va pas ? Merci bonne soirée