当前位置:   article > 正文

MySQL根据出生日期查询年龄,以及对年龄进行分组统计_mysql根据生日查询年龄大于18

mysql根据生日查询年龄大于18

1. 根据出生日期查询年龄

SELECT TIMESTAMPDIFF(YEAR, DATE(出生日期), CURDATE()) AS 别名 FROM 表名;

函数DATE():提取日期或日期/时间表达式的日期部分;

函数CURDATE():返回当前的日期;

函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2):计算两个日期的时间差,unit是计算时间差的单位,可以是SECOND秒、MINUTE分钟、HOUR小时、DAY天、WEEK星期、MONTH月、QUARTER季度、YEAR年。

2.对年龄进行分组统计

a、case 结构

  1. SELECT
  2. ageGroup, COUNT(*) AS ageNum
  3. FROM
  4. (
  5. SELECT
  6. CASE
  7. WHEN TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) <= 18 THEN '≤18岁'
  8. WHEN TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) >= 19 AND TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) <= 20 THEN '19-20岁'
  9. WHEN TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) >= 21 AND TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) <= 22 THEN '21-22岁'
  10. WHEN TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) >= 23 AND TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) <= 24 THEN '23-24岁'
  11. WHEN TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) >= 25 THEN '≥25岁'
  12. ELSE '未知'
  13. END AS ageGroup
  14. FROM 表名
  15. ) AS a
  16. GROUP BY ageGroup;

b、if 结构

  1. SELECT
  2. ageGroup, COUNT(*) AS ageNum
  3. FROM
  4. (
  5. SELECT
  6. IF(TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) <= 18, '≤18岁',
  7. IF(TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) >= 19 AND TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) <= 20, '19-20岁',
  8. IF(TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) >= 21 AND TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) <= 22, '21-22岁',
  9. IF(TIMESTAMPDIFF(YEAR, DATE(字段), CURDATE()) > 23, '≥23岁', '未知')
  10. )
  11. )
  12. ) AS ageGroup
  13. FROM 表名
  14. ) AS a
  15. GROUP BY ageGroup;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/40204
推荐阅读
相关标签
  

闽ICP备14008679号