Erreur requête SQL fonction BETWEEN

Signaler
-
 destiny -
bonjour, j'ai une requête SQL où je sélectionne le résultat entre deux dates avec le mot clé BETWEEN.
la requête fonctionne mais le problème est que, elle m'avoie même le date que je ne pas demander mais le résultat d'un même jour ça fonctionne comme par exemple 23/02/2021 au 23/02/2021(ça ça fonctionne )
Mais 01/01/2021 au 22/02/2021 ça m'envoie les dates dont je ne pas besoin.
La date dans ma base de données et en format francais du genre
date('d/m/Y')

Il y'a t-il quelqu'un pour m'aider s'il vous plaît ?
Je galère dessus depuis un moment vraiment.

5 réponses

Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280
Bonjour,

Les dates, dans une BDD ( mysql ) doivent OBLIGATOIREMENT être stockées dans des champs DATE, DATETIME, TIMESTAMP .... et certainement pas dans des varchar.

Tu dois donc modifier ta bdd pour enregistrer les dates dans le bon type de champ et dans le bon format ( Y-m-d )

Là.. les fonctions telles que BETWEEN fonctionneront.
Messages postés
31038
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
24 février 2021
7 405
Bonjour,

Dans une base de données, les dates doivent être stockées en format date.

Si elles sont en format texte, c'est sur que le "01/05/2020" est situé entre "01/01/2021" et "01/06/2021".

Si c'est le cas il faudrait convertir le format texte en date dans la bdd. Ou peut être essayer dans le select, je ne suis pas utilisateur de mysql, j'ai trouvé cela, à essayer : https://www.mysqltutorial.org/mysql-str_to_date/

Merci fort pour vos réponses super cool. J comprend pourquoi ça fait ça vous avez vraiment raison car le type de mes champs date est bien var char.
Alors pour m'enleger la tâche comment j peux gérer ça étant donné que l'application fonctionne déjà et il ya déjà pas mal de données comment je peux proceder pour modifier mes champs là de type date qui sont en varchar et le rendre type date dans mysql sans pour autant perturber les dates précédentes.
Merci de pouvoir m'aider.
Messages postés
31038
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
24 février 2021
7 405
Tu rajoutes un champ date à la table, tu l'initialises avec l'ancienne date, tu modifies l'application pour mettre à jour le nouveau champ

et entre temps tu pourrais créer une vue sur la table où le champ texte est converti en date
Oui merci je viens de jeter un coup d'oeil au lien que vous m'avez envoyer.
Une idée me viens en tête et si je laisser ces types en varchar et utiliser la fonctionne là qui est expliquée dans le tutoriel lorsque l'utilisateur recherche entre deux date cela ne fonctionnerait pas ?
Messages postés
31038
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
24 février 2021
7 405 > destiny
Si cela fonctionnerait, mais cela laisse perdurer une anomalie de conception du logiciel et de son schéma bdd
Oui vous avez raison la bonne façon de faire est d'essayer ce que vous m'avez conseillé.
Merci quand même pour votre aide...