我在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岁之间的用户?
答案 0 :(得分:14)
您可以在查询中直接执行此操作:
SELECT *
FROM rijder
WHERE geboortedatum BETWEEN
CURDATE() - INTERVAL 21 YEAR AND
CURDATE() - INTERVAL 18 YEAR
这样,您不需要特殊的PHP函数来构造DATE字符串。只需传入数字,MySQL将为您进行比较。只需确保BETWEEN
中的较高数字位于第一位。
答案 1 :(得分:4)
试试这个:::
Select * from table where (DATEDIFF(dob, DATE(NOW())) / 365.25) between 18 and 21
答案 2 :(得分:2)
SELECT * FROM rijder
WHERE geboortedatum
between date_add(curdate(), interval -18 year)
and date_add(curdate(), interval -21 year)
答案 3 :(得分:0)
试试这个
SELECT * FROM rijder WHERE DATEDIFF(NOW(), geboortedatum)/365.25 BETWEEN 18 AND 21