我有一个拥有dob(DATE format)
字段的MySQL表,现在我需要按年龄来获取记录。例如,我编写了一个查询来获取超过18年的记录。我需要按18 year to 30 year
岁的年龄来获取记录。
有人能告诉我这个问题的确切查询。已经尝试过的查询
SELECT id,dob FROM profiles WHERE DATE_SUB(CURDATE(),INTERVAL 18 YEAR) > dob;
答案 0 :(得分:1)
如果你还包括18或30年,你可以使用:
SELECT id,dob FROM profiles WHERE dob between DATE_SUB(CURDATE(),INTERVAL 18 YEAR) and DATE_SUB(CURDATE(),INTERVAL 30 YEAR)
或者如果你被排除在外:
SELECT id,dob FROM profiles WHERE dob < DATE_SUB(CURDATE(),INTERVAL 18 YEAR) and dob > DATE_SUB(CURDATE(),INTERVAL 30 YEAR)
答案 1 :(得分:0)
老实说,我讨厌减去日期,因为如果你把数据放在不同的顺序,这些函数可以做奇怪的事情。我更喜欢添加,更容易和没有错误:P
/* Latest compiled and minified CSS included as External Resource*/
/* Optional theme */
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css');
body {
width:400px;
//margin: 10px;
}
.row div {
display: inline-block;
margin-bottom;50px;
}
.row2 {margin-left:30px;}
.row div{margin-right:10px;}
答案 2 :(得分:0)
set sdate := DATE_SUB(CURDATE(),INTERVAL 18 YEAR);
set edate := DATE_SUB(CURDATE(),INTERVAL 30 YEAR);
SELECT id,dob FROM profiles
WHERE dob < sdate and dob > edate;
根据大型/大型桌子的性能,这要好得多。