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

Mla*_*enG 1 mysql sql

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

例:

ID                  Name
_________________________
0906013123588   |   Name1
1508007128536   |   Name2
1603008120746   |   Name3
2705983123601   |   Name4
0101018125432   |   Name5
Run Code Online (Sandbox Code Playgroud)

结果应该是:3

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

DCO*_*DCO 5

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

我认为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
Run Code Online (Sandbox Code Playgroud)