思路
採用add_months函數
函數用途
add_months(x,y)或者add_months(times,months)函數:用於計算在時間x加上Y個月後的時間值,要是Y的值爲負數的話就是在
這個時間點之前的時間值(這個時間-Y個月)。
實例
select sysdate from dual;
查詢當前時間1個月以前的時間:
select add_months(sysdate,-1) from dual;
查詢當前時間1個月以後的時間:
select add_months(sysdate,1) from dual;
如對公司員工表:查詢2年前進入公司的員工的姓名:
select Ename from Company where sysdate >add_months(time,2*12);
A:--從emp表查詢列出來公司就職時間超過24年的員工名單
select ename, hiredate
from emp
where hiredate <= add_months(sysdate, -288);
--負數代表系統時間(sysdate)之前的24年的時間-288 = -24*12
B:--查詢出在員工'SCOTT'入職一年後入職的員工的信息
select ename, a.hiredate, sal
from emp a, (select hiredate from emp where ename = 'SCOTT') b
where a.hiredate > = add_months(b.hiredate, 12);
解析:上面的查詢思路如下
a:在from語句的後面將員工'SCOTT'的入職時間查出放在一個表裏,表的別名爲b
b:將上面的b表再次作爲查詢表
c:然後利用add_months(x,y)函數在b表的hiredate之後的12個月作爲查詢條件
C:--查詢半年前的時間
select add_months(sysdate,-6) from dual;
解析:dual是oracle提供的最小功能表,它只有一行一列