Php 选择特定年龄范围内的所有用户
我有一个MySQL数据库中的用户,他们的生日以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
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你能回答这个问题吗?我需要它