Ma requête devant récupérer les événements entre 2 dates de recherche ne retourne aucun résultat, pourquoi ?

a marqué ce sujet comme résolu.

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 :)

+0 -0

Vu de l’extérieur, puisque je ne pratique pas du tout MySQL.

Le début : select @search_creation_date = "2021.." fait que search_creation_date est une chaine de caractère, et du coup, j’utiliserais to_char () pour convertir les dates au moment de tester si les dates conviennent.

En mettant bien sûr les bons paramètres pour to_char.

Ou sinon : select @search_creation_date = to_date("2021.." )

Aucune garantie de résultat.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte