SQL查询查找截至特定日期年龄超过60岁的个人

时间:2015-09-18 13:24:08

标签: sql oracle11g

我是新手,所以请放轻松我。我看了整个网络,无法找到任何真正帮助我的东西。

所以我需要提供在计算机部门工作的所有正规学者的详细信息 截至2014年12月31日已超过60岁。

我的麻烦来自于我如何处理显示60岁以上的人的数据你可以减去另一个约会的日期吗?或者是否有可能的sql命令我缺少。

我的尝试:

SELECT *
FROM staff, department 
WHERE DOB <= '31/12/1964'
AND staff.department_ID = department.department _ID

3 个答案:

答案 0 :(得分:1)

有计算日期之间差异的函数,但最有效的方法是首先计算一个人在2014-12-31出生的日期为60。这样就可以直接与值进行比较,因此数据库可以使用索引(如果有的话)。

Oracle示例:

select
  PersonId, FirstName, LastName
from
  Person
where
  Born <= add_months(date '2014-12-31', -60 * 12)

MySQL的示例(尽管您删除了MySQL标记):

select
  PersonId, FirstName, LastName
from
  Person
where
  Born <= date_sub('2014-12-31' 60 year)

答案 1 :(得分:0)

我认为在SQL SERVER中

选择Datediff(DAYS,&#39; 05-19-2015&#39;,&#39; 05-21-2015&#39;)

在我的SQL中 SELECT TIMESTAMPDIFF(HOUR,start_time,end_time)            as difference FROM timeattendance WHERE timeattendance_id =&#39; 1484&#39;

答案 2 :(得分:0)

oracle add_months函数可以帮助你。

where yourfield < add_months(date '1964-12-31', 60*12 )