oracle查詢半年前的記錄

思路

採用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提供的最小功能表,它只有一行一列
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章