天天看點

oracel 中關于時間日期的取值和轉化

1.首先是日期轉化的兩種格式,一般用第二種多吧。

to_date("要轉換的字元串","轉換的格式")   兩個參數的格式必須比對,否則會報錯。即按照第二個參數的格式解釋第一個參數。

to_char(日期,"轉換格式" ) 即把給定的日期按照“轉換格式”轉換。

      取系統目前時間 并轉化成 yyyy-mm-dd(年月日格式)

       to_char(sysdate,'yyyy-mm-dd')

2.下面要用到add_months()函數  負數:代表往前  正數:代表往後。

   根據系統目前時間,取到上個月月底(上個月最後一天)并轉化

       to_char(last_day(add_months(sysdate,-1)),'yyyy-mm-dd')

   根據系統目前時間,取到上個月月初(上個月第一天) 并轉化

       to_char((LAST_DAY(ADD_MONTHS(SYSDATE, -2)) + 1,'yyyy-mm-dd')

3.dual是oracle中的僞表。

    具體含義:Dual 是 Oracle中的一個實際存在的表,任何使用者均可讀取,常用在沒有目标表的select語句塊中

    根據系統目前時間 取上一個月 并轉化

        select to_char(add_months(trunc(sysdate),-1),'yyyymm') from dual;

    根據系統目前時間 取下一個月 并轉化

       select to_char(add_months(trunc(sysdate),1),'yyyymm') from dual;

4.TRUNC函數為指定元素而截去的日期值。

函數方法:TRUNC(date,[fmt])

date:代表日期,  fmt:代表日期格式

 trunc(sysdate,'yyyy') --傳回當年第一天。  2017-01-01

    trunc(sysdate,'mm') --傳回當月第一天。   2017-07-01

 trunc(sysdate,'d') --傳回目前星期的第一天。2017-07-17 

 trunc(sysdate,'dd')--傳回目前年月日      2017-07-19

    trunc (sysdate, 'hh') -- 傳回目前時間  小時    2017-07-19 10:00:00 目前時間為 10點11分  

    trunc (sysdate, 'mi') -- 傳回目前時間  分鐘   2017-07-19 10:11:00  trunc函數不精确到秒