MySQL日期精度

时间:2011-08-08 15:54:35

标签: mysql date

我在我的WHERE条款

上有这个
dob <= DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND dob >= DATE_SUB(CURDATE(),INTERVAL 19 YEAR) 

它运作正常,它根据他们的DOB按年龄搜索一个人, 但是存在一些精确问题。

请考虑以下事项:

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

我很困惑,但是再次约会是我的弱点,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

哦,我想当你做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                                   =            ??`