我有两列的表格。第一列是个人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位数字是控制号码(目前我不感兴趣)。
解决方案是清理数据库设计。您可以创建一个新表,然后以编程方式将数据转换到该新表。您的新表应包含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)