Requete SQL sur des dates pb avec les dizaine

Résolu
shaka_zoulou -  
 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

Christounet Messages postés 1264 Date d'inscription   Statut Membre Dernière intervention   1 392
 
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
cindy_misa Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   44
 
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
Utilisateur anonyme
 
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
shaka_zoulou
 
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