Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql如何按年龄选择符合条件的记录_Php_Mysql_Sql - Fatal编程技术网

Php mysql如何按年龄选择符合条件的记录

Php mysql如何按年龄选择符合条件的记录,php,mysql,sql,Php,Mysql,Sql,我使用的查询需要从年龄介于(多个年龄)之间的用户中选择行 就像我在表中有3个用户,用户有3个字段: ID | NAME | DOB 1 | A | 12-06-1980 2 | B | 12-06-1970 3|C|12-06-1990 4|D|12-06-1995 5 | E | 12-06-1985 现在如果我想要25岁以下的用户名单 姓名|出生日期 C | 12-06-1990 D|12-06-1995 对此有什么疑问?有什么想法吗 SELECT * FROM users WHERE DO

我使用的查询需要从年龄介于(多个年龄)之间的用户中选择行

就像我在表中有3个用户,用户有3个字段:

ID | NAME | DOB

1 | A | 12-06-1980
2 | B | 12-06-1970
3|C|12-06-1990
4|D|12-06-1995
5 | E | 12-06-1985

现在如果我想要25岁以下的用户名单

姓名|出生日期

C | 12-06-1990
D|12-06-1995

对此有什么疑问?有什么想法吗

SELECT * FROM users WHERE DOB 
?? 有什么想法吗?试试这个:

SELECT * FROM users WHERE DATEDIFF(CURDATE(), DOB)/365<25 

您可以这样做:

SELECT * FROM users WHERE DOB >= (CURDATE() - INTERVAL 25 YEAR)
要从
dateofbirth
date字段计算上述查询中的25,如下所示:

SELECT * FROM users 
WHERE DOB >= (CURDATE() - INTERVAL FLOOR(DATEDIFF(CURDATE(),dateofbirth)/365) YEAR)
我会用这个:

select id, name, dob,
  date_format(curdate(), '%Y') - date_format(dob, '%Y') - 
  (date_format(curdate(), '00-%m-%d') < date_format(dob, '00-%m-%d')) as age
from users
虽然这给出了正确的2000:

select
  date_format('4012-12-12', '%Y') - date_format('2012-12-12', '%Y') - 
  (date_format('4012-12-12', '00-%m-%d') < date_format('2012-12-12', '00-%m-%d'))
选择
日期格式('4012-12-12','%Y')-日期格式('2012-12-12','%Y')-
(日期格式('4012-12-12','00-%m-%d')<日期格式('2012-12-12','00-%m-%d'))

但是,如果你只需要计算一个年龄,两种解决方案都应该有效。

检查这个:如果我不想指定25岁怎么办?我想让它在查询的“从出生日期”列中获取年龄?如果我不想指定25岁怎么办?我想让它在查询的“从出生日期”列中获得年龄?我已经用一个例子更新了我的答案,这个例子是从表上的
dateofbirth
字段计算年龄('25')。@Nelson:在where中计算天数差不会提示返回年龄,您需要在select子句中输入条件。
select id, name, dob,
  date_format(curdate(), '%Y') - date_format(dob, '%Y') - 
  (date_format(curdate(), '00-%m-%d') < date_format(dob, '00-%m-%d')) as age
from users
SELECT floor(DATEDIFF('4012-12-12', '2012-12-12')/365)
select
  date_format('4012-12-12', '%Y') - date_format('2012-12-12', '%Y') - 
  (date_format('4012-12-12', '00-%m-%d') < date_format('2012-12-12', '00-%m-%d'))