我有一个用户表,其中包括:用户ID、用户名、出生日期、注册日期。我想按 2000 年以来注册的成员(member)的当前年龄来计算成员(member)。我知道要执行查询的后半部分,但计算部分很困难:
SELECT COUNT (DOB) WHERE registration_date >= ‘01/01/2000’
任何帮助。谢谢
最佳答案
您需要按年龄对成员进行分组,因此需要在 GROUP BY 子句中计算年龄。这很复杂,因为您需要考虑闰年。 (我借用了 here 中的闰年部分。)
CREATE TABLE Users (userID INT, userName VARCHAR(10), DOB DATE, registrationDate DATE);
INSERT INTO Users VALUES
(1,'bob','1990-06-01','2005-06-01')
,(1,'old gus','1990-06-01','1995-06-01')
,(1,'joe','1991-01-01','2010-06-01')
,(1,'jim','1950-01-01','2010-06-01')
SELECT YEAR(CURDATE()) - YEAR(DOB) - (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(DOB, '%m%d'))
,COUNT(1)
FROM Users
WHERE registrationdate >= '01/01/2012'
GROUP BY YEAR(CURDATE()) - YEAR(DOB) - (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(DOB, '%m%d'))
查看sqlfiddle 。
关于mysql - 如何根据给定出生日期和注册日期sql按当前年龄进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898181/