Requete SQL sur des dates pb avec les dizaine

Résolu/Fermé
shaka_zoulou - 14 mars 2008 à 11:43
 shaka_zoulou - 14 mars 2008 à 12:13
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
A voir également:

4 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 383
14 mars 2008 à 11:52
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 vendredi 22 février 2008 Statut Membre Dernière intervention 6 août 2009 44
14 mars 2008 à 11:53
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
14 mars 2008 à 11:59
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
14 mars 2008 à 12:13
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