我需要在年龄之间获取mysql数据

时间:2015-07-31 06:44:00

标签: php mysql mysqli

我有一个拥有dob(DATE format)字段的MySQL表,现在我需要按年龄来获取记录。例如,我编写了一个查询来获取超过18年的记录。我需要按18 year to 30 year岁的年龄来获取记录。 有人能告诉我这个问题的确切查询。已经尝试过的查询

SELECT id,dob FROM profiles WHERE DATE_SUB(CURDATE(),INTERVAL 18 YEAR) > dob;    

3 个答案:

答案 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;

根据大型/大型桌子的性能,这要好得多。