使用mysql DB中的DOB来确定子/成人

时间:2013-07-02 21:18:48

标签: php mysql sql

这是我在数据库中搜索符合特定条件的候选人的查询。我正在使用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());

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

用户可能想要搜索包含$ Odata中所有内容的成人。我怎么能这样做?

浏览Calculate Age in MySQL (InnoDb)Search age range in mysql, php我知道它可以独立完成,但我怎样才能将它合并到我的上述查询中。这可能吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以在official MySQL documentation中找到正确的答案:

SELECT CASE WHEN TIMESTAMPDIFF(YEAR,dob,CURDATE()) >=18 THEN 'adult' ELSE 'child' END
FROM p_candidate;