【发布时间】:2013-12-16 01:20:26
【问题描述】:
我已经尝试了所有其他问题/解决方案,但没有答案。所以这里是:我需要SELECT * FROM people WHERE(dob 是 18 到 40)
但我的出生日期存储为 DATE 类型 YYYY-MM-DD
例如需要选择 18 到 40 岁之间的人!
【问题讨论】:
-
如果你知道某人的出生日期,你如何计算他的年龄?
我已经尝试了所有其他问题/解决方案,但没有答案。所以这里是:我需要SELECT * FROM people WHERE(dob 是 18 到 40)
但我的出生日期存储为 DATE 类型 YYYY-MM-DD
例如需要选择 18 到 40 岁之间的人!
【问题讨论】:
您需要使用BETWEEN 和一些年份计算TIMESTAMPDIFF(YEAR,'1980-02-04',NOW())
SELECT * FROM people WHERE TIMESTAMPDIFF(YEAR,`dob`,NOW()) BETWEEN 18 AND 40
【讨论】:
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
【讨论】:
你必须从今天算起 40 年前,从今天算起 18 年前。假设它是1940-01-01 和1980-01-01,那么它将是:
WHERE dob BETWEEN '1940-01-01' AND '1980-01-01';
【讨论】:
由于我不知道您使用的 SQL 方言,所以我采用完整的变体
因为age 是现在 - 出生(!)
select * from people where
current date - date(birth) > MINAGE
and
current date - date(birth) < MAXAGE
current date 取决于您使用的 SQL
【讨论】:
因为年龄是相对于今天的:
select * from people where
date_sub(curdate(), interval 40 year) =< dob
and date_sub(curdate(), interval 18 year) >= dob
这适用于任何版本的mysql
【讨论】: