PDA

Visualizza la versione completa : Calcolare età in anni da data di nascita


doraemon83
24-08-2006, 18:29
Salve a tutti.
ho una tabella in mysql in cui c'è un campo data_nascita.
Devo fare una interrogazione in cui calcolo da questa tabella il numero di persone che abbiano una età in anni uguale a un valore passato come parametro allo script php.

ho provato cosi :

select count(distinct CF) as tot
from cittadini c
where year(datediff(curdate(),c.data_nascita))=".$eta

dove eta è il valore passato allo script e CF è il codice fiscale della persona

il problema è che questa interrogazione da sempre risultati sbagliati perché la differenza è calcolata in giorni, come posso fare per ottenere il risultato in anni?

ho provato anche con :

select count(distinct CF) as tot
from cittadini c
where year(curdate()-year(c.data_nascita)=".$eta

ma in questo caso mi conta anche le persone che nell'anno corrente nn hanno ancora compiuto gli anni

come posso fare?

grazie ciao ciao

stex1984
27-08-2006, 16:18
non conosco php, ma da quello che capisco la query fa la differenza dando "in output" il numero di giorni...
naturalmente non si può fare un confronto tra giorni e anni...
se in input hai l'età, perchè non trasformi l'età data in input in giorni?
basta che moltiplichi l'età per 365...
non saprei dirti in altro modo....

Shagrat
27-08-2006, 19:14
Potresti usare una query tipo questa:



select count(distinct CF) as tot from cittadini WHERE DATE_ADD(data_nascita,INTERVAL 26 YEAR)<now()

per sapere tutti quelli che hanno più di 26 anni compiuti (se metti il maggiore trovi quelli che ancora non hanno compiuto 26 anni

oppure una come questa:



select count(distinct CF) as tot from cittadini DATE_ADD(data_nascita,INTERVAL 26 YEAR)<now() and year(data_nascita)=(year(now())-26)


per trovare quelli che hanno esattamente quell'età (già compiuta)

:ciauz:

Loading