5

我在 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 岁的用户?

4

4 回答 4

14

您可以简单地在查询中执行此操作:

SELECT * 
FROM rijder 
WHERE geboortedatum BETWEEN 
    CURDATE() - INTERVAL 21 YEAR AND 
    CURDATE() - INTERVAL 18 YEAR

这样,您不需要特殊的 PHP 函数来构造 DATE 字符串。只需传入数字,MySQL 就会为您进行比较。只需确保较高的数字在BETWEEN.

于 2012-07-11T08:05:59.583 回答
4

试试这个 :::

Select * from table where (DATEDIFF(dob, DATE(NOW())) / 365.25) between 18 and 21
于 2012-07-11T08:07:12.583 回答
2
SELECT * FROM rijder 
WHERE geboortedatum 
    between date_add(curdate(), interval -18 year) 
    and date_add(curdate(), interval -21 year)
于 2012-07-11T08:05:44.970 回答
0

试试这个

SELECT * FROM rijder WHERE DATEDIFF(NOW(), geboortedatum)/365.25 BETWEEN 18 AND 21
于 2012-07-11T08:08:24.523 回答