Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 选择特定年龄范围内的所有用户_Php_Mysql_Select - Fatal编程技术网

Php 选择特定年龄范围内的所有用户

Php 选择特定年龄范围内的所有用户,php,mysql,select,Php,Mysql,Select,我有一个MySQL数据库中的用户,他们的生日以DATE格式(yyyy-mm-dd)存储。我想在数据库中选择使用PHP的用户,他们的年龄在一定范围内 我的最低年龄(18岁)和最高年龄(21岁)。我知道我可以在这两者之间做点什么,但问题是我只知道年份而不知道日期 有人对我如何做到这一点有什么建议吗 这就是我目前正在做的: function leeftijden($age) { $morgen['day'] = date('d'); $morgen['month'] = dat

我有一个MySQL数据库中的用户,他们的生日以
DATE
格式(yyyy-mm-dd)存储。我想在数据库中选择使用PHP的用户,他们的年龄在一定范围内

我的最低年龄(18岁)和最高年龄(21岁)。我知道我可以在这两者之间做点什么,但问题是我只知道年份而不知道日期

有人对我如何做到这一点有什么建议吗

这就是我目前正在做的:

function leeftijden($age) { 
    $morgen['day']   = date('d'); 
    $morgen['month'] = date('m'); 
    $morgen['year']  = date('Y') - $age;

    $datum = $morgen['year'] .'-' .$morgen['month'].'-' .$morgen['day'];

    return $datum;
}
然后我会这样做:

$maxDatum = leeftijden(18);
$minDatum = leeftijden(32);
$sqlRijder = "SELECT * FROM rijder WHERE geboortedatum between '".$minDatum."' AND '".$maxDatum."'";
但这并不是100%有效


我如何才能只选择年龄在18到21岁之间的用户?

您只需在查询中正确选择即可:

SELECT * FROM rijder 
WHERE geboortedatum 
    between date_add(curdate(), interval -18 year) 
    and date_add(curdate(), interval -21 year)
SELECT * 
FROM rijder 
WHERE geboortedatum BETWEEN 
    CURDATE() - INTERVAL 21 YEAR AND 
    CURDATE() - INTERVAL 18 YEAR
这样,就不需要特殊的PHP函数来构造日期字符串。只需输入数字,MySQL就会为您进行比较。只需确保较高的数字在
之间的
中排在第一位即可尝试以下操作:

Select * from table where (DATEDIFF(dob, DATE(NOW())) / 365.25) between 18 and 21
试试这个

SELECT * FROM rijder WHERE DATEDIFF(NOW(), geboortedatum)/365.25 BETWEEN 18 AND 21

您是否打印了日期以确保日期正确?你也可以只做
date('Y-m-d',strottime(“-18年”)或<代码>日期('Y-m-d',标准时间(-$年”)当然它不会100%起作用,因为“年龄”是一个数字,它的格式不是日期。因此,取当前日期减去年龄会得到一个不准确的结果function@alfasin-你是说根据某人的出生日期,不可能计算出他们的年龄吗?我是说这行:
$morgen['year']=date('Y')-$age
看起来是以
来计算年龄,而不是以
日期
来计算年龄,但是如果没有使用MySQL,那不是不能使用索引吗?很好的解决方案@Zane Bien你能回答这个问题吗?我需要它