У меня проблема с получением базы данных с возрастом более и менее, чем значение, которое я выбираю
В настоящее время база данных для образца возрастного формата "1996-07-30"
И я хочу получить данные пользователя с возрастом фильтрации более 20 и менее 25 лет
Я пробовал некоторые запросы, и он не работает, и вот пример кода, который я создал:
SELECT *
, TIMESTAMPDIFF(YEAR, tglLahir, CURDATE()) AS age
FROM tb_member
WHERE TIMESTAMPDIFF(YEAR, tglLahir, CURDATE()) >= 20
AND (TIMESTAMPDIFF(YEAR, tglLahir, CURDATE()) <= 25
ORDER
BY nama
LIMIT 0,10
и я также попробовал еще один пример:
SELECT *
, TIMESTAMPDIFF(YEAR, tglLahir, CURDATE()) AS age
FROM 'tb_member'
WHERE tglLahir BETWEEN DATE_SUB(NOW(), INTERVAL 20 YEAR)
AND DATE_SUB(date, INTERVAL 30 YEAR)
ORDER
BY nama
LIMIT 0,10
но все же никаких результатов, есть ли другое решение для решения этой проблемы?
ОБНОВИТЬ
Я решаю свою проблему, я все еще использую этот код:
TIMESTAMPDIFF(YEAR, tglLahir, CURDATE()) >= '20' AND
TIMESTAMPDIFF(YEAR, tglLahir, CURDATE()) <= '25'
И работайте отлично, спасибо, что кто-то ответит на мой вопрос, спасибо.
Мне очень нравится использовать DATE_SUB()
для расчета для этой цели (используйте DATE_SUB для вычитания из NOW(), чтобы получить 20 лет назад, а затем 25 лет назад). В сочетании с BETWEEN вы сможете:
SELECT *, TIMESTAMPDIFF(YEAR, tglLahir, CURDATE()) AS age
FROM 'tb_member' WHERE
tglLahir BETWEEN
DATE_SUB( NOW(), INTERVAL 20 YEAR) AND
DATE_SUB( NOW(), INTERVAL 25 YEAR)
ORDER BY 'nama' LIMIT 0,10
Второй пример запроса в вашем вопросе близок, но вы используете date
во втором DATE_SUB()
который, я думаю, может быть виновником вашей проблемы с этим подходом.