Erreur requête SQL fonction BETWEEN

Fermé
destiny - 23 févr. 2021 à 18:38
 destiny - 24 févr. 2021 à 15:58
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.
A voir également:

5 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
23 févr. 2021 à 18:48
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.
0
jee pee Messages postés 39631 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234
Modifié le 23 févr. 2021 à 18:51
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/

0
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.
0
jee pee Messages postés 39631 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234
23 févr. 2021 à 20:27
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
0
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 ?
0
jee pee Messages postés 39631 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234 > destiny
24 févr. 2021 à 13:36
Si cela fonctionnerait, mais cela laisse perdurer une anomalie de conception du logiciel et de son schéma bdd
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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...
0