从Oracle SQL中的当前日期减去30年

时间:2015-02-26 16:49:44

标签: sql oracle

我需要编写一个查询,其中我选择了30多年前出生日期的所有人。不幸的是,当我使用Oracle时,我无法使用DATEADD()函数。

我现在有了这个,但显然这不是动态的,并且随着岁月的流逝而不会发生变化:

SELECT Name, DOB
FROM Employee
WHERE DOB <= DATE '1985-01-01';

3 个答案:

答案 0 :(得分:11)

使用Add_MONTHS 添加 (- 12 * 30)

SELECT Name, DOB
FROM Employee
WHERE DOB <= ADD_MONTHS(SYSDATE, -(12 * 30));

答案 1 :(得分:3)

其他方式,使用间隔:

SELECT Name, DOB
FROM Employee
WHERE DOB <= sysdate - interval '30' year;

答案 2 :(得分:0)

只需使用ROUND((sysdate - DOB)/365)

SELECT Name, DOB
FROM Employee
WHERE ROUND((sysdate - DOB)/365) <= 30;