天天看點

oracle sysdate 時間整理

一、擷取oracle日期中的年份

在Oracle中,要獲得日期中的年份,例如把sysdate中的年份取出來,并不是一件難事。常用的方法是:

                           Select to_number(to_char(sysdate,'yyyy')) from dual,

      而實際上,oracle本身有更好的方法,那就是使用Extract函數,使用方法是:Select Extract(year from sysdate) from dual,

      這種方法省掉了類型轉換,看上去更加簡潔。相應的,要取得月份或日,可以用:select extract (month from sysdate) from dual和select extract (day from sysdate) from dual。

      例如(1):

SQL> SELECT '年' AS "标題", EXTRACT(YEAR FROM SYSDATE) AS "數值" FROM dual UNION ALL

2  SELECT '月' AS "标題", EXTRACT(MONTH FROM SYSDATE) AS "數值" FROM dual UNION ALL

3  SELECT '日' AS "标題", EXTRACT(DAY FROM SYSDATE) AS "數值" FROM dual;

    例如(2):

SQL>  Select to_number(to_char(sysdate,'yyyymm')) as 月份   from dual

->>>另一種方式擷取月份  年份

select EXTRACT(MONTH FROM SYSDATE) AS month FROM dual    ---擷取月份  改成year就是擷取年份

二、insert插入語句 插入時間的寫法

   寫insert語句時,日期類型字段用 to_date('2011-04-15 13:25:00','yyyy-mm-dd hh24:mi:ss'),如果是插入目前時間,直接寫sysdate應該就可以顯示時分秒,

如果不行再轉換一次試試

to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')

三、查詢到秒、毫秒級

 查詢到秒     select to_char(sysdate,'yyyy-MM-DD HH24:MM:SS') from dual

查詢到毫秒   SELECT TO_CHAR(systimestamp,'yyyy-MM-DD HH24:MM:SSSSS') from dual

至于你插入的找不到秒,你自己看下那些資料是不是你當下插入的,也許是曆史資料,還有表結構,你插入sysdate的時候是否做了時間轉化等,如trunc(sysdate,'dd')

+1 這情況我也遇到過,插入的時候都是sysdate,但怎麼都查不出時分秒來,原來是查詢語句沒寫對,應該這樣寫:

SQL code:select to_char(tdate,'yyyy-mm-dd hh24:mi:ss') 時間 from t_tmp

四、截取掉部分  時分秒

trunc(sysdate)= trun(sysdate,'dd')截取掉時分秒,結果是2011-05-11 00:00:00

select trunc(sysdate,'mm') from dual; 截取月份,結果 2011-05-01 00:00:00

select trunc(sysdate,'yy') from dual; 截取年份,結果 2011-01-01 00:00:00

+7 是加7天

+1/24 是加 1/24 天,即一個小時

結果意思就是 一周後的淩晨1點整

select trunc(sysdate)+7+1/24 from dual; 可以看到結果

------

select trunc(sysdate-1) from dual;