в моей таблице есть столбцы: год, месяц, день в таблице пользователей. Я хочу рассчитать и выбрать пользователей, чей возраст составляет 18–27 лет. Я пытался использовать DATEDIFF () AND CONCAT() sql функция для объединения столбцов дня рождения (год, месяц, день), но это мне не помогает.Я проверил DATEDIFF () из W3schools.org , в котором говорится, что DATEDIFF () принимает 3 аргумента, тогда как mariaDB говорит 2 аргумента.
, но когдаЯ попробовал w3schools - это то, чего я хочу достичь.
пожалуйста, как мне этого добиться?или другой способ сделать это в SQL
$onlineAt = strtolower($_POST['online_at']);
$ageMin = $_POST['age_min'];
$ageMax = $_POST['age_max'];
$sex = $_POST['sex'];
$countryCode = $_POST['country'];
$time = time(); $CUid = getCuID();
$onlineAt = ( $onlineAt == 'now' ? 5: ($onlineAt == 'today' ? 1440:1441)); //minutes
$date = date('Y-m-d');
//sql to fetch people
$sql = "SELECT *
FROM (
SELECT m.last_activity_time lat ,
m.user_id,
m.firstname,
m.lastname,
m.username,
m.course,
m.about,
m.user_group FROM
$main_table m
WHERE ((($time - m.last_activity_time) /60) < {$onlineAt})
AND m.gender ='{$sex}' AND (
FLOOR(DATEDIFF(CONCAT(m.year,'-',m.month,'-',m.day),'{$date}')) BETWEEN {$ageMin} AND {$ageMax}
)
) AS sub WHERE user_id !='{$CUid}' ORDER BY RAND() LIMIT 20";
$query = queryDB($sql);
//die(mysqli_error($conn));
if (mysqli_num_rows($query)) {
var_dump(mysqli_num_rows($query));
while ($row = mysqli_fetch_array($query)) {
//code
}
}else{
echo "no result";
}