Mysql,选择年龄范围内的用户

Mysql,选择年龄范围内的用户,mysql,Mysql,基本的查询问题,但似乎无法正确回答。我试图找到11岁或12岁的用户。DOB存储为时间戳 “11年前”的时间戳是956485529 “12年前”的时间戳是924863129 查询: SELECT * FROM (`users`) WHERE `dob` < 956485529 AND `dob` > 924863129 SELECT*FROM(`users`),其中`dob`924863129 似乎只返回11岁的用户,而不是12岁的用户。我做错了什么?你必须使用或者像你说的那样使用

基本的查询问题,但似乎无法正确回答。我试图找到11岁或12岁的用户。DOB存储为时间戳

“11年前”的时间戳是956485529

“12年前”的时间戳是924863129

查询:

SELECT * FROM (`users`) WHERE `dob` < 956485529 AND `dob` > 924863129
SELECT*FROM(`users`),其中`dob`<956485529和`dob`>924863129

似乎只返回11岁的用户,而不是12岁的用户。我做错了什么?

你必须使用
或者像你说的那样使用
,因为dob列不能同时有两个不同的值。

`dob` < 956485529 AND `dob` > 924863129

然后玩这个(当然,调整您的查询)

我会使用BETWEEN条件:

SELECT * FROM (`users`) WHERE `dob` BETWEEN 924863129 AND 956485529
另外,我建议使用数据类型。这样,您可以执行以下操作:

SELECT * FROM (`users`) WHERE `dob` BETWEEN DATE_SUB(NOW(), INTERVAL 12 YEAR) AND DATE_SUB(NOW(), INTERVAL 11 YEAR)

这里有更多的例子:

我读到你可以更改你的dob类型。
好的,如果您将其更改为DATETIME(并修改该列中的值以将出生日期存储为DATETIME),您可以尝试以下操作:

select * FROM users  
WHERE (dob>DATE_SUB(NOW(),INTERVAL 13 YEAR)) 
  AND (dob<=DATE_SUB(NOW(),INTERVAL 11 YEAR));
从用户中选择*
其中(dob>日期(现在(),间隔13年))
及(出生日期)
今天是2011-04-23!
2011-04-23-1999-04-23=12

因此,您应该这样编写查询:

SELECT * FROM (`users`) WHERE `dob` < 956485529 AND `dob` >= 924863129
SELECT*FROM(`users`),其中`dob`<956485529和`dob`>=924863129

希望有帮助!

dob
列的数据类型是什么?如果可能,请使用时间戳数据类型我认为这不起作用:如果'dob',此查询返回我的所有用户,包括12岁以上的用户。我可以更改dob列的数据类型没有问题:)varchar不适合日期查询之间只返回11岁的用户,不是12岁的孩子。
SELECT * FROM (`users`) WHERE `dob` < 956485529 AND `dob` > 924863129
mysql> select FROM_UNIXTIME(924863129), CURRENT_TIMESTAMP();
+--------------------------+---------------------+
| FROM_UNIXTIME(924863129) | CURRENT_TIMESTAMP() |
+--------------------------+---------------------+
| 1999-04-23 18:25:29      | 2011-04-23 22:06:50 |
+--------------------------+---------------------+

mysql> select FROM_UNIXTIME(956485529), CURRENT_TIMESTAMP();
+--------------------------+---------------------+
| FROM_UNIXTIME(956485529) | CURRENT_TIMESTAMP() |
+--------------------------+---------------------+
| 2000-04-23 18:25:29      | 2011-04-23 22:07:19 |
+--------------------------+---------------------+
SELECT * FROM (`users`) WHERE `dob` < 956485529 AND `dob` >= 924863129