DOB Field的平均年龄 - MySQL / PHP

时间:2012-11-14 03:03:59

标签: mysql date average dob

我不知道如何计算我的联系人的平均年龄,这些联系人都存在于带有DOB日期字段的mysql表中,例如YYYY-MM-DD。

有没有办法处理MySQL调用(请注意我使用的是cakephp,但这应该不是问题)

由于

4 个答案:

答案 0 :(得分:7)

您可以使用DATEDIFF()确定年龄:

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

使用AVG()在MySQL中找到平均值:

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。

答案 1 :(得分:1)

这是你的答案

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

答案 2 :(得分:1)

如果你正在使用Bailey Parker的第二种方法,你真的不需要做日期。只需减去年份并采取平均值。

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

答案 3 :(得分:0)

我将如何做到这一点:

SQL

SELECT 
AVG( YEAR(now()) - YEAR(<DOB_field>)) as avg_age  
FROM <table_name> 
WHERE <DOB_field> IS NOT NULL