来自DOB字段的平均年龄-MySQL/PHP

来自DOB字段的平均年龄-MySQL/PHP,mysql,date,average,dob,Mysql,Date,Average,Dob,我不知道如何计算我的联系人的平均年龄,他们都存在于一个带有DOB日期字段(如YYYY-MM-DD)的mysql表中 有没有办法处理MySQL调用(请注意,我使用的是cakephp,但这不应该是问题) 谢谢您可以使用以下方法确定年龄: MySQL中的平均值是: 因此,将这些因素结合起来: SELECT AVG(DATEDIFF(TO_DAYS(NOW()), TO_DAYS(DOB))) as `Average` FROM Contacts; 请注意,这将返回以天为单位的平均年龄,而不是以年为单

我不知道如何计算我的联系人的平均年龄,他们都存在于一个带有DOB日期字段(如YYYY-MM-DD)的mysql表中

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


谢谢

您可以使用以下方法确定年龄:

MySQL中的平均值是:

因此,将这些因素结合起来:

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(TIMESTAMPDIFF(YEAR, DOB, CURDATE())) AS `Average` FROM Contacts WHERE DOB IS NOT NULL;

如果你用的是贝利·帕克的第二种方法,你其实不需要做datediff。只需减去年份,取平均值

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

如果您想要以年为单位的答案,请除以365.242199
从表中选择平均值((TO_DAYS(NOW())-TO_DAYS(DOB))/365.242199
SELECT AVG(TIMESTAMPDIFF(YEAR, DOB, CURDATE())) AS `Average` FROM Contacts WHERE DOB IS NOT NULL;
SELECT AVG(YEAR(NOW())-YEAR(dob)) as `Average` FROM users;