我需要编写一个查询,其中我选择了30多年前出生日期的所有人。不幸的是,当我使用Oracle时,我无法使用DATEADD()
函数。
我现在有了这个,但显然这不是动态的,并且随着岁月的流逝而不会发生变化:
SELECT Name, DOB
FROM Employee
WHERE DOB <= DATE '1985-01-01';
答案 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;