天天看點

Oracle中trunc函數

TRUNC就是取整的意思,一般需要帶一個參數,代表要精确到的位數。

它可以用在日期和數值涼個場合。

[b]1.TRUNC for dates(日期)[/b]

TRUNC函數傳回以指定元素格式截去一部分的日期值。

  其具體的文法格式如下:

  TRUNC(date[,fmt])

  其中:

  date 為必要參數,是輸入的一個日期值

  fmt 參數可忽略,是日期格式,用以指定的元素格式來截去輸入的日期值。忽略它則由最近的日期截去

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

按小時取整:select to_char(trunc(sysdate,'hh'),'yyyy-mon-dd hh24:mi:ss') from dual;

按年取整(傳回本年度第一天):select to_char(trunc(sysdate,'yyyy'),'yyyy-mon-dd hh24:mi:ss') from dual;

按天取整:select to_char(trunc(sysdate,'dd'),'yyyy-mon-dd hh24:mi:ss') from dual;

select to_char(trunc(sysdate),'yyyy-mon-dd hh24:mi:ss') from dual;

按星期取整(傳回本周第一天(周日)):select to_char(trunc(sysdate,'d'),'yyyy-mon-dd hh24:mi:ss') from dual;

fmt值參考如下:  

Unit Valid format parameters

Year SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y

ISO Year IYYY, IY, I

Quarter Q

Month MONTH, MON, MM, RM

Week WW

IW IW

W W

Day DDD, DD, J

Start day of the week DAY, DY, D

Hour HH, HH12, HH24

Minute MI

[b]2.TRUNC for number(數字)[/b]

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

  其具體的文法格式如下

  TRUNC(number[,decimals])

  其中:

  number 待做截取處理的數值

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

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

  TRUNC(89.985,2)=89.98

  TRUNC(89.985)=89 (即取整)

  TRUNC(89.985,-1)=80

  TRUNC(-89.985,1)=-89.9

  注意:第二個參數可以為負數,表示為小數點左邊指定位數後面的部分截去,即均以0記。與取整類似,比如參數為1即取整到十分位,如果是-1,則是取整到十位,以此類推;如果所設定的參數為負數,且負數的位數大于整數的位元組數的話,則傳回為0。如:TRUNC(89.985,-3)=0。