我应该有一个生日场论文值:AVG返回空但不
28 Juillet 1982 (I want this one to be excluded)
09/16/1981 (This one will be used)
(empty, should be excluded)
03/19/1953 (This one will be used)
我想要得到的MM/DD/YYYY日期的平均年龄。现在我的查询是:
SELECT AVG(NULLIF(YEAR(NOW())-YEAR(Birthdate), 0)) AS AvgAge FROM `User`
我也试过:
SELECT AVG(YEAR(NOW())-YEAR(Birthdate)) AS AvgAge FROM `User`
但结果总是相同的:NULL
每id_user是100个%NUMERICS有一个正确毫米/ dd/yyyy birthdate,所以我也试过了:
SELECT AVG(CASE WHEN id_user >=0 THEN YEAR(NOW()) - YEAR(Birthdate) ELSE NULL END) AS AvgAge FROM `User`
和认为:
SELECT AVG(CASE WHEN CEIL(id_user) = id_user THEN YEAR(NOW()) - YEAR(Birthdate) ELSE NULL END) AS AvgAge FROM `User`
不过NULL ...
你有任何想法,为什么它呢?
也许是我的一个简单的错误,但我无法弄清楚。
谢谢!
它是VARCHAR或日期时间类型的列? – duffymo
类型是varchar – Kev
这可能是你的问题 - YEAR函数是否知道如何处理varchar? – duffymo