Requete SQL, année en cours

Résolu/Fermé
doudoupe Messages postés 85 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 7 mars 2012 - Modifié par doudoupe le 5/07/2010 à 02:13
doudoupe Messages postés 85 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 7 mars 2012 - 9 juil. 2010 à 01:59
Bonjour tout le monde!

Petite question concernant les dates en SQL.
J'ai une base de donnée contenant une table 'users' avec un champs (parmi d'autres) reg_date (=registration date). Certains users se sont inscrit en 2009 (par ex) et d'autres en 2010, cette année.

J'ai un script php qui se connecte à ma base de donnée via PDO et une requete SQL (parmi d'autres) qui doit compter le nombre de users s'étant inscrits cette année (l'année en cours) et ne pas prendre en compte les users inscrits les autres années.

Attention: Si l'année en cours est 2011, je souhaite compter le nombre de users inscrits en 2011 (logique).

J'ai donc penser à ça:

$currentY = date("Y-01-01");  
$data_nbUserYear = $bdd->query('SELECT COUNT(*) FROM users WHERE reg_date>'.$currentY.';');  
$nbUserYear = $data_nbUserYear->fetch();  


nb: dans la bdd, les date sont de format Y-m-d

Forcement, ça aurait été trop facile! :D
Le résultat m'affiche le nombre de users quelque soit l'année (comme si je n'avais pas mis de condition WHERE)
Avez-vous une solution ?

Merci pour vos réponses!
doudoupe

edit: clarification! :)

5 réponses

Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
5 juil. 2010 à 02:20
tu as beaucoup de méthodes possibles ^^

1) une table par années : tu regarde l'année, tu regarde si la table correspondante existe, sinon tu la crée

2) une table globale : tu regarde l'année, tu compte le visiteur dans la ligne où l'année est celle qu'il faut

un dessin :

| ID | année | visiteurs |
| 1 | 2010 | 150 |
| 2 | 2011 | 123 |
| 3 | 2012 | 145 |

aprés ça sert à rien, c'est la fin du monde XD


pour te simplifier la vie, tu peux créer directement plusieurs années de suite ;)

ce sont les deux qui me viennent tout de suite à l'esprit, mais il y en a d'autre ;)
0