Oracle Trunc函式

keeking發表於2012-08-08

Trunc 函式

  用法一:

  為指定元素而截去的日期值。

  語法如下:

  TRUNC(date,[fmt])

  引數分析:

  date

  一個日期值。

  fmt

  日期格式,該日期將由指定的元素格式所截去。忽略它則由最近的日期截。

  不多說了,直接看示例吧!看完你就會明白。

  示例:

  以今天為例,今天是2010年9月10日。(剛剛好今天是教師節,在這裡祝老師們節日快樂哦!)

  SELECT trunc(sysdate,'mm')FROM dual 返回2010-9-01(也就是說返回當月的第一天)

  SELECT trunc(sysdate,'yy')FROM dual 返回2010-1-1 當年第一天

  SELECT trunc(sysdate,'dd')FROM dual 返回2010-9-10 當天

  SELECT trunc(sysdate,'day')FROM dual 返回2010-9-5 當週第一天

  SELECT trunc(sysdate)FROM dual 返回2010-9-10 不填fmt引數就預設是當天


2.TRUNC(for number)

Oracle TRUNC函式返回處理後的數值,其工作機制與ROUND函式極為類似,只是該函式不對指定小數前或後的部分做相應舍入選擇處理,而統統截去。

其具體的語法格式如下

  1. TRUNC(number[,decimals]) 

其中:

number 待做擷取處理的數值

decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分

下面是該函式的使用情況:

TRUNC(89.985,2)=89.98

TRUNC(89.985)=89

TRUNC(89.985,-1)=80

注意:第二個引數可以為負數,表示為小數點左邊指定位數後面的部分截去,即均以0記


select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;  --顯示當前時間
2011-12-29 16:24:34

select trunc(sysdate,'year') from dual; --擷取到年(本年的第一天)
2011-1-1

select trunc(sysdate,'q') from dual; --擷取到季度(本季度的第一天)
2011-10-1

select trunc(sysdate,'month') from dual; --擷取到月(本月的第一天)
2011-12-1

select trunc(sysdate,'') from dual; 

select to_char(trunc(sysdate),'yyyymmdd hh24:mi:ss') from dual; --預設擷取到日(當日的零點零分零秒)
20111229 00:00:00

select trunc(sysdate-1,'w') from dual;  -- 離當前時間最近的週四,若當天為週四則返回當天,否則返回上週四
2011-12-22

select trunc(sysdate,'ww') from dual;  --擷取到上週末(上週週六)
2011-12-24

select trunc(sysdate,'day') from dual; --擷取到周(本週第一天,即上週日)
2011-12-25

select trunc(sysdate,'iw') from dual; --本週第2天,即本週一
2011-12-26

select to_char(trunc(sysdate,'dd'),'yyyymmdd hh24:mi:ss') from dual;--擷取到日(當日的零點零分零秒)
20111229 00:00:00

select trunc(sysdate,'hh24') from dual;  --擷取到小時(當前小時,零分零秒)
2011-12-29 16:00:00

select trunc(sysdate,'mi') from dual; --擷取到分(當前分,零秒)
2011-12-29 16:24:00

select trunc(sysdate,'ss') from dual ;--報錯,沒有精確到秒的格式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7899089/viewspace-740322/,如需轉載,請註明出處,否則將追究法律責任。

相關文章