【问题标题】:Average Age from DOB Field - MySQL / PHPDOB 字段的平均年龄 - MySQL / PHP
【发布时间】:2012-11-14 03:03:59
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: mysql average date


    【解决方案1】:

    您可以使用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。

    【讨论】:

    • 如果您想要以年为单位的答案,请除以 365.242199 SELECT AVG((TO_DAYS(NOW())-TO_DAYS(DOB)))/365.242199 from table;
    【解决方案2】:

    这是你的答案

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-01
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多