[英]mysql how to select records where condition by age
我正在使用查询,需要从年龄介于(多个年龄)之间的用户中选择行
像我在3个表的表用户中有3个用户:
ID | NAME | DOB
1 | A | 1980年12月6日
2 | B | 1970年12月12日
3 | C | 1990年6月12日
4 | D | 1995年12月6日
5 | E | 1985年12月6日
现在,如果我想将25位以下的用户列表输出
NAME | 出生日期
C | 1990年6月12日
D | 1995年12月6日
对这个想法有什么疑问呢?
SELECT * FROM users WHERE DOB
? 任何想法
尝试这个 ::
SELECT * FROM users WHERE DATEDIFF(CURDATE(), DOB)/365<25
要获得年龄(岁):
SELECT
FLOOR(tempUsers.t/365) as `years`
tempUsers.t%365 as `months`
from
(
SELECT DATEDIFF(CURDATE(), DOB) t FROM users
) tempUsers
select *
from users
where DOB >= ADDDATE(CURRENT_DATE(), INTERVAL -25 YEAR);
您可以这样做:
SELECT * FROM users WHERE DOB >= (CURDATE() - INTERVAL 25 YEAR)
要从dateofbirth
date字段中计算上述25个查询,方法如下:
SELECT * FROM users
WHERE DOB >= (CURDATE() - INTERVAL FLOOR(DATEDIFF(CURDATE(),dateofbirth)/365) YEAR)
我会用这个:
select id, name, dob,
date_format(curdate(), '%Y') - date_format(dob, '%Y') -
(date_format(curdate(), '00-%m-%d') < date_format(dob, '00-%m-%d')) as age
from users
它比除以365更精确。 这给2001年是错误的
SELECT floor(DATEDIFF('4012-12-12', '2012-12-12')/365)
虽然这给出了2000是正确的:
select
date_format('4012-12-12', '%Y') - date_format('2012-12-12', '%Y') -
(date_format('4012-12-12', '00-%m-%d') < date_format('2012-12-12', '00-%m-%d'))
但是,如果您只需要计算年龄,则这两种解决方案都应该有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.