mysql - 如何根据给定出生日期和注册日期sql按当前年龄进行计数

标签 mysql sql

我有一个用户表,其中包括:用户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/

相关文章:

sql - Mysql - 计算有多少行有一定数量?

sql - 我的查询有多糟糕?

php - 使用 fetch(PDO::FETCH_ASSOC) 从 MySQL 数据库回显数据;

mysql - 如何获取用户列表?

mysql - 如何从表mysql查询中选择等于当前日期的匹配详细信息

当一天有 "0"时,MySQL STR_TO_DATE 似乎失败

php - mysql:将默认值存储为变量

sql - 将 SQL 日期时间四舍五入到午夜

MySQL慢查询请求修复,覆盖以提高速度

sql - 查找具有特定表的数据库或在 SQL Server 的每个数据库中查找表