我不知道如何计算我的联系人的平均年龄,这些联系人都存在于带有DOB日期字段的mysql表中,例如YYYY-MM-DD。
有没有办法处理MySQL调用(请注意我使用的是cakephp,但这应该不是问题)
由于
答案 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