Requete SQL sur des dates pb avec les dizaine

Résolu/Fermé
Signaler
-
 shaka_zoulou -
Bonjour,

Je travaille sur un questionnaire automatisé en PHP accédant à une base de donnée MySQL.

Lors d'une requête sur ma table de réponses j'ai une erreur sur les dates des formations des utilisateurs voici laquelle :

select * from reponse, utilisateur 
where reponse.num_utilisateur=utilisateur.num_utilisateur 
and utilisateur.complet='oui' 
and date_debut>='2008-1-1' and date_fin<='2008-12-1'


Cette requête est censée m'afficher les résultats des utilisateurs dont la formation s'est déroulée pendant l'année cependant elle ne retourne aucun résultat.

Néanmoins ceci fonctionne si au lieu de choisir un mois comportant une dizaine (à partir d'octobre) je me limite au mois de septembre (9) comme sur la requête suivante :

select * from reponse, utilisateur 
where reponse.num_utilisateur=utilisateur.num_utilisateur 
and utilisateur.complet='oui' and date_debut>='2008-1-1' and date_fin<='2008-9-1'


Celle-ci fonctionne mais c'est très gênant d'être limité aux 9 premiers mois de l'année.

Quelqu'un aurait la solution ?

Cordialement

4 réponses

Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 374
Bonjour,

Tout d'abord, la zone
date_debut
est-elle définie comme une zone date dans ta table ?
Si oui, je pense que tu dois utiliser le test suivant
date_debut >= '2008-01-01' and date_debut <= '2008-12-31'
et non
date_debut >= '2008-1-1' and date_debut <= '2008-12-1'


A plus
0
Messages postés
146
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
6 août 2009
43
salut ,je crois que tu dois pas faire la jointure avec le WHERE lorsque tu l'utilise dans les critères de la requête ,utilise inner join .
Essaye cette requête :

select * from reponse inner join utilisateur
on reponse.num_utilisateur=utilisateur.num_utilisateur
where utilisateur.complet='oui'
and date_debut>='2008/1/1' and date_fin<='2008/12/31'
0

Je te conseille de faire comme ça :
WHERE DATE_FORMAT(date_debut, "%Y-%m-%d") > STR_TO_DATE('2008-01-01', "%Y-%m-%d") 
AND     DATE_FORMAT(date_fin, "%Y-%m-%d") < STR_TO_DATE('2008-12-31', "%Y-%m-%d")


Il faut au préalable que tu fixes le format de tes dates dans mysql car l'exemple ci-dessus marche pour les dates au format anglais.

Si tu as un autre format alors change la deuxième partie du DATE_FORMAT(a savoir : "%Y-%m-%d")
0

merci pour vos réponses.

Le format de mes colonnes date_debut et date_fin ne correspondait pas au format DATE.

Désolé et encore merci :)
0