Bonsoir,
Pour un moteur de recherche interne à une application que je développe, j'ai besoin d'effectuer des recherches sur l'âge d'individus contenus dans une base de données.
J'ai 2 types de "filtres" de recherche : Contient et Commence par avec des LIKE.
Pour effectuer des recherches sur les dates de naissance c'est facile, mais pour en effectuer sur l'âge... cela se complique, car je n'ai pas l'âge des individus de stocké dans la base de données...
Je cherche donc une fonction SQL pouvant effectuer un calcul pour ensuite renvoyer la liste des individus dont l'âge pourrait contenir ou commencer par exemple par '2'.
Il faut pour cela, je pense, déduire l'âge des individus en fonction de leur date de naissance et la date actuelle mais là je coince totalement dans la mise en place de ce genre d'algorithme
Auriez-vous une piste svp ?
Merci à tous.
EDIT :
J'ai fait quelques test avec dans la clause WHERE, ceci :
Et cela me renvoie bien les individus ayant un '2' dans leur âge.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FLOOR(DATEDIFF(day, Date_Naissance, getDate()) / 365.25) LIKE '%2%'
Par contre, j'ai cru voir ici : http://blog.developpez.com/sqlpro/p1...-anniversaires
Que FLOOR(DATEDIFF(day, Date_Naissance, getDate()) / 365.25) n'était pas assez précis mais je ne comprends pas bien quelles sont les dates indiquées dans l'exemple :
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM T_PERSONNE_PRS WHERE ((MONTH(PRS_DATE_NAISSANCE) -1 ) * 31 + (DAY(PRS_DATE_NAISSANCE) -1 ) ) % (31 * 12) BETWEEN ((MONTH('2013-11-20') - 1 ) * 31 + (DAY('2013-11-20') - 1) ) % (31 * 12) AND ((MONTH('2013-12-10') - 1 ) * 31 + (DAY('2013-12-10') + 371) ) % (31 * 12);
Partager