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


Select all users who are within a certain age range

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

我的最低年龄(18岁)和最高年龄(21岁)。我知道我可以用BETWEEN做点什么,但问题是我只知道年份,不知道日期。

有人建议我怎么做吗?

这就是我目前正在做的:

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 
    CURDATE() - INTERVAL 21 YEAR AND 
    CURDATE() - INTERVAL 18 YEAR

这样,您就不需要特殊的PHP函数来构造DATE字符串。只需输入数字,MySQL就会为您进行比较。只要确保较高的数字在BETWEEN中位于第一位即可。

试试这个::

Select * from table where (DATEDIFF(dob, DATE(NOW())) / 365.25) between 18 and 21
SELECT * FROM rijder 
WHERE geboortedatum 
    between date_add(curdate(), interval -18 year) 
    and date_add(curdate(), interval -21 year)

尝试这个

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