0

这是我在数据库中搜索满足特定条件的候选人的查询。我正在使用 php、mysql、html

$Odata = mysql_query("SELECT * FROM p_candidate WHERE(`gender` LIKE '%".$Gender."%')
     AND (`verbal`  LIKE '%".$Verbal."%') AND(`waiver`  LIKE '%".$Waiver."%')
     AND(`waiver_type`  LIKE '%".$W_Type."%') AND(`sel_staff`  LIKE '%".$A_Staff."%')
     AND(`sel_peers` LIKE '%".$A_Peers."%')AND(`verbal`  LIKE '%".$Awake."%')
     AND(`ambulatory`  LIKE '%".$Ambulatory."%') AND(`function`  LIKE '%".$Function."%')"
) or die(mysql_error());

我想添加另一个标准 - 成人/儿童。我将出生日期作为数据库中的一列。如果候选人在 18 岁以上,则属于成人,否则属于儿童。

用户可能想要搜索具有 $Odata 中所有内容的成人。我怎样才能做到这一点?

查看MySQL (InnoDb) 中的计算年龄mysql、php 中的搜索年龄范围我知道它可以独立完成,但我怎样才能将它合并到我的上述查询中。那可能吗?

4

2 回答 2

0

这可能会有所帮助

样本数据

create table dob
( 
    dob datetime
  ) 
;
insert into dob select '2001-10-08' ;
insert into dob select '1976-11-28' ;

找出儿童或成人:

select 
 dob, 
 case when dob  > Current_date() - INTERVAL 18 YEAR then 'child' else 'adult' end
from dob

http://sqlfiddle.com/#!2/2df6d/12

于 2013-07-02T21:40:49.500 回答
0

You can find a correct answer in the official MySQL documentation:

SELECT CASE WHEN TIMESTAMPDIFF(YEAR,dob,CURDATE()) >=18 THEN 'adult' ELSE 'child' END
FROM p_candidate;
于 2013-07-02T23:12:48.283 回答