使用出生日期的SQL查询

时间:2013-01-23 11:52:42

标签: sql database oracle

我需要找到25-29岁之间的学生目前在注册系统中排除超过25岁。

表格是:STUDENT& STUDENT_STATUS_HISTORY

Student包含PERSON_ID&其他领域BIRTH_DATE Student_Status_History包含REASON_CODE(排除为4)

我的问题是关于加入表格的语法以及如何使用出生日期正确计算所需的年龄范围。

有人可以提供建议吗?

2 个答案:

答案 0 :(得分:3)

在PERSON_ID上加入表格。

要获得出生日期,请使用日期差异等功能:

select  trunc((months_between(sysdate, dob))/12) age 

答案 1 :(得分:1)

尝试此查询:

select count(*) from student s join student_status_history ssh 
on 
   s.id=ssh.student_id
where 
  ss.reason_code=4 
and 
  DATEDIFF(year,s.birthdate,sysdate)>=25 and DATEDIFF(year,s.birthdate,sysdate)<=29

请参阅DateDIFF

编辑如果您的数据库不支持DATEDIFF,请尝试以下操作:

select count(*) 
from 
  student s 
join 
  student_status_history ssh 
on 
   s.id=ssh.student_id
where 
  ss.reason_code=4 
and 
  floor(months_between(s.birthdate, sysdate) /12)>=25 and
  floor(months_between(s.birthdate, sysdate) /12)<=29