我已经尝试了所有其他问题/解决方案,但没有回答。所以这就是:我需要SELECT * FROM people WHERE
(dob是18到40)
但我的dob存储为DATE
类型YYYY-MM-DD
需要选择18到40岁之间的人!
答案 0 :(得分:2)
您需要使用BETWEEN
年份计算TIMESTAMPDIFF(YEAR,'1980-02-04',NOW())
SELECT * FROM people WHERE TIMESTAMPDIFF(YEAR,`dob`,NOW()) BETWEEN 18 AND 40
答案 1 :(得分:1)
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
答案 2 :(得分:1)
你必须从今天开始计算40年前,从18年前开始计算。假设它是1940-01-01
和1980-01-01
,那么它将是:
WHERE dob BETWEEN '1940-01-01' AND '1980-01-01';
答案 3 :(得分:0)
因为年龄与今天相关:
select * from people where
date_sub(curdate(), interval 40 year) =< dob
and date_sub(curdate(), interval 18 year) >= dob
这适用于任何版本的mysql
答案 4 :(得分:0)
因为我不知道您使用的SQL方言我采用了完整的变体
因为age
现在 - 出生(!)
select * from people where
current date - date(birth) > MINAGE
and
current date - date(birth) < MAXAGE
current date
取决于您正在使用的SQL