我在 WHERE
子句中有这个
dob <= DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND dob >= DATE_SUB(CURDATE(),INTERVAL 19 YEAR)
它工作正常,它根据出生日期按年龄搜索一个人, 但是存在一些精度问题。
考虑以下几点:
1 to 19 = 397
20-25 = 1350
26- 30 = 1139
31-35 = 601
36-40 = 346
41-45 = 218
46- 50 = 154
51-55 = 139
56-60 = 65
61-85 = 78 Total = 4487
如果我使用相同的方法但搜索 1 - 85 返回 5607
我很困惑,但日期又是我的弱点,所以任何帮助将不胜感激。
最佳答案
哦,我想当你做的时候DATE_SUB(CURDATE(),INTERVAL 19 YEAR)
然后 DATE_SUB(CURDATE(),INTERVAL 20 YEAR)
你想念那里第 19 年的人,所以你想念那里的人第 19、26、30、35 ......等等
应该是
dob < DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND dob >= DATE_SUB(CURDATE(),INTERVAL 19 YEAR)
然后
dob < DATE_SUB(CURDATE(),INTERVAL 19 YEAR) AND dob >= DATE_SUB(CURDATE(),INTERVAL 25 YEAR)
编辑:
1 to 19 = ??
19 to 25 = ??
25 to 30 = ??
30 to 35 = ??
35 to 40 = ??
40 to 45 = ??
45 to 50 = ??
50 to 55 = ??
55 to 60 = ??
60 to 85 = ??`
关于MySQL 日期精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984862/