如何选择年龄范围内的人[重复]
Posted
技术标签:
【中文标题】如何选择年龄范围内的人[重复]【英文标题】:how SELECT people within age range [duplicate] 【发布时间】:2013-12-16 01:20:26 【问题描述】:我已经尝试了所有其他问题/解决方案,但没有答案。所以这里是:我需要SELECT * FROM people WHERE
(dob 是 18 到 40)
但我的出生日期存储为 DATE
类型 YYYY-MM-DD
例如需要选择 18 到 40 岁之间的人!
【问题讨论】:
如果你知道某人的出生日期,你如何计算他的年龄? 【参考方案1】:您需要使用BETWEEN
和一些年份计算TIMESTAMPDIFF(YEAR,'1980-02-04',NOW())
SELECT * FROM people WHERE TIMESTAMPDIFF(YEAR,`dob`,NOW()) BETWEEN 18 AND 40
See fiddle here
TIMESTAMPDIFF
YEAR(date)
【讨论】:
+1 这是最简单的方法,但是你没有在里面使用 YEAR(date) 函数,为什么要把那个链接放在那里? 只要是 mysql 5.0+ 就可以了。 @FilipeSilva 我想要年份的差异所以如果你在这里看到一个例子dev.mysql.com/doc/refman/5.5/en/… @gillyspy 是的,取自 mysql 5.5 手册 非常感谢!它奏效了【参考方案2】:SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
【讨论】:
【参考方案3】:你必须从今天算起 40 年前,从今天算起 18 年前。假设它是1940-01-01
和1980-01-01
,那么它将是:
WHERE dob BETWEEN '1940-01-01' AND '1980-01-01';
【讨论】:
【参考方案4】:由于我不知道您使用的 SQL 方言,所以我采用完整的变体
因为age
是现在 - 出生(!)
select * from people where
current date - date(birth) > MINAGE
and
current date - date(birth) < MAXAGE
current date
取决于您使用的 SQL
【讨论】:
【参考方案5】:因为年龄是相对于今天的:
select * from people where
date_sub(curdate(), interval 40 year) =< dob
and date_sub(curdate(), interval 18 year) >= dob
这适用于任何版本的mysql
【讨论】:
以上是关于如何选择年龄范围内的人[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在Javascript中选择对象内的数组内的字段[重复]