计算在特定年龄段使用身份证号码的人数

时间:2019-03-07 08:45:32

标签: mysql sql

我有两列的表格。第一列是个人ID号,第二列是名称。我需要使用其ID号(包含出生日期)来总结5至16岁(大于5岁且小于16岁)范围内的孩子。

示例:

ID                  Name
_________________________
0906013123588   |   Name1
1508007128536   |   Name2
1603008120746   |   Name3
2705983123601   |   Name4
0101018125432   |   Name5

结果应为:3

ID号的前7位数字代表出生日期,接下来的6位数字是控制号码(目前我不感兴趣)。

2 个答案:

答案 0 :(得分:5)

解决方案是清理数据库设计。 您可以创建一个新表,然后以编程方式将数据转换到该新表。 您的新表应包含date_of_birth的单独日期列。

我认为MySql无法处理yyy格式。 它可以处理yy或yyyy。 https://www.w3schools.com/sql/func_mysql_date_format.asp

如果格式正确,则可以执行以下操作:

SELECT * 
FROM person_table 
WHERE
DATEDIFF(
  CURRENT_DATE,
  STR_TO_DATE(
    SUBSTRING(
      CONVERT (ID,char)
      ,0,6
    ),'%d%m%y'
  )/365
BETWEEN 5 AND 16

答案 1 :(得分:2)

我不会为此目的使用new。我只需将出生日期与适当的出生日期范围进行比较:

datediff()

您需要注意两位数的年份。毕竟,身份证不能很好地处理100岁以上的人。