YYYY-MM-DD などの DOB 日付フィールドを持つ mysql テーブルにすべて存在する連絡先の平均年齢を計算する方法がわかりませんでした。
MySQL呼び出しを行う方法はありますか(私はcakephpを使用していますが、それは問題ではないことに注意してください)
ありがとう
次を使用して年齢を判断できます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 が提案したように、1 日の平均を 365.242199 で割ります。
これがあなたの答えです
SELECT AVG(TIMESTAMPDIFF(YEAR, DOB, CURDATE())) AS `Average` FROM Contacts WHERE DOB IS NOT NULL;