Average Age from DOB Field - MySQL / PHP

average, date, mysql

Solution

You can determine age by using `DATEDIFF()`:

DATEDIFF(TO_DAYS(NOW()), TO_DAYS(DOB))

The average is found in MySQL using `AVG()`:

AVG(Column)

So combine those:

SELECT AVG(DATEDIFF(TO_DAYS(NOW()), TO_DAYS(DOB))) as `Average` FROM Contacts;

Note that this returns the average age in days, not years. To obtain years you can average the years part of each date:

SELECT AVG(DATEDIFF(YEAR(NOW()), YEAR(DOB))) as `Average` FROM Contacts;

Or as @TimDearborn suggested, divide the day average by 365.242199.

Problem

I wasn't sure how I could calculate the average age of my contacts who all exist in a mysql table with a DOB date field such as YYYY-MM-DD. Is there a way to do with with a MySQL call (please note I am using cakephp but that shouldn't be an issue) Thanks

Original source