Средний возраст из поля DOB - MySQL / PHP

Я не был уверен, как я мог вычислить средний возраст моих контактов, которые все существуют в таблице mysql с полем даты DOB, таким как YYYY-MM-DD.

Есть ли способ сделать с вызовом MySQL (обратите внимание, я использую CakePHP, но это не должно быть проблемой)

Спасибо

4 ответа

Решение

Вы можете определить возраст с помощью DATEDIFF():

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

Среднее значение найдено в MySQL, используя AVG():

AVG(Column)

Так что объедините эти:

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

Обратите внимание, что это возвращает средний возраст в днях, а не в годах. Чтобы получить годы, вы можете усреднить летнюю часть каждой даты:

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

Или, как предложил @TimDearborn, разделите среднее значение дня на 365.242199.

Вам не нужно вводить датировку, если вы используете второй метод Бэйли Паркера. Просто вычтите годы и возьмите среднее.

SELECT AVG(YEAR(NOW())-YEAR(dob)) as `Average` FROM users;

Вот твой ответ

SELECT AVG(TIMESTAMPDIFF(YEAR, DOB, CURDATE())) AS `Average` FROM Contacts WHERE DOB IS NOT NULL;

Вот как я бы это сделал:

SQL

SELECT 
AVG( YEAR(now()) - YEAR(<DOB_field>)) as avg_age  
FROM <table_name> 
WHERE <DOB_field> IS NOT NULL
Другие вопросы по тегам