Date de naissance avec MySql

Par : Tetageek | Tags : | Le : 19-02-2009

Comment obtenir avec MySql les personnes qui sont dans une tranche d'âge ?

Sur la plupart des exemples que j'ai trouvé sur le web pour obtenir les internautes correspondant à une tranche d'âge 27-32 ans cela ne fonctionnait pas bien.

J'ai trouvé ces exemples qui me renvoyaient la plupart n'importe quoi. Je souhaitais obtenir les internautes qui ont entre 27 et 32 ans. Comme j'ai 32 ans, je me suis dit c'est bon cela doit fonctionner.

SELECT * FROM matable WHERE monchampdatetime >= DATE_SUB(CURRENT_DATE( ), INTERVAL 32 YEAR) AND monchampdatetime <= DATE_SUB(CURRENT_DATE( ), INTERVAL 27 YEAR)

Et bien non cela ne marche pas. Si on décompose la requête :

SELECT DATE_SUB(CURRENT_DATE( ), INTERVAL 32 YEAR)

Logiquement je me dit cela doit me renvoyer le 1976-02-19 et bien non cela me renvoi 1977-02-19. Si on décompose la requête cela donne donc :

SELECT * FROM matable WHERE monchampdatetime >= '1977-02-19' AND monchampdatetime <= '1982-02-19'

Donc comme quoi il ne faut pas croire tout ce que l'on vous dit sur les sites :-)

Allez après avoir galeré comme un idiot voici une requête qui permet d'obtenir justement le bon résultat.

select *, (DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(monchampdatetime)), '%Y')+0) as age from matable where (DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(monchampdatetime)), '%Y')+0) between 27 and 32

== (DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(monchampdatetime)), '%Y')+0) as age == permet d'obtenir l'âge d'une personne depuis un champ datetime.

Voilou.

 
Catégories : Programmation
 

Commentaires


 

1 - akouel337

20 Mar 2009 00:12

Tu fais des stats ????

j'utlise ta requete pour m'aider à dechiffrer mon sondage :-)

thanks l'ami

 

2 - akouel337

20 Mar 2009 00:19

yop l'ami

premier test marche pas ! comment on l'adpate pour un champ DATE (0000-00-00)

axel

 

3 - admin

20 Mar 2009 09:53

Yep, mais j'utilise aussi cette requête pour le moteur de recherche afin de récuperer justement les internautes entres certains ages genre 18-25 ans. Je n'ai pas essayé sur un champ date mais c'est possible que cela fonctionne. Sachant que je rempli mon champ datetime de la façon suivante : 1904-04-15 00:00:00
Donc a essayer :-)

 

Les commentaires sont fermés.

 
 
 
Tetageek ! A propos

Xavier Arnaudin

Développeur Web

Symfony, Php, Ajax, Mysql ...

Statistiques
Articles 85
Commentaires 40 - SPAM 3

 
 
 
Derniers Commentaires

tetageek :Exact comme tu dit seb en effet je ferais pareil même si ma femme...

seb :J'avais vu une autre video dans cette ecole, ils reprennaient Cemetary...

alizea :Django Reinhardt : je conseille.Un des pionniers du jazz manouche.Si vous ne...

admin :@Yannick oui cela je pense va intéresser quelques personnes. Par...

Yannick :Sympa comme initiative, je suis pas un féru de la pêche mais bon...

Tonio31 :A l'heure d'aujourd'hui, je n'ai toujours pas compris...

 
 

Tous droits réservés Réalisation tetageek :: Design TetaGeek :: Réalisation Symfony