8

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

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

谢谢

4

3 回答 3

9

您可以使用以下方法确定年龄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。

于 2012-11-14T03:09:16.843 回答
1

这是你的答案

SELECT AVG(TIMESTAMPDIFF(YEAR, DOB, CURDATE())) AS `Average` FROM Contacts WHERE DOB IS NOT NULL;
于 2013-07-11T12:51:57.797 回答
1

如果您使用的是 Bailey Parker 的第二种方法,则实际上不需要进行 datediff。只需减去年份并取平均值。

SELECT AVG(YEAR(NOW())-YEAR(dob)) as `Average` FROM users;
于 2016-05-26T16:40:07.020 回答