Oracle中trunc、round 、ceil和floor函數的區別

1、trunc函數
處理數值,對給定數值進行截取處理,不會對給定數值做四捨五入處理。

語法格式:

TRUNC(number[,decimals])--number 待處理的數據,decimals指明需保留小數點後的位數,默認爲0

如果參數爲負數,則小數點往前取位數,如果負數位數大於或等於待處理數據位數,則返回0.

selecttrunc(123.456)from dual;--123

selecttrunc(123.456,2)from dual;--123.45

selecttrunc(123.456,-1)from dual;--120

selecttrunc(123.456,-3)from dual;--0

處理日期,trunc函數以指定格式截取日期值。

語法格式:

TRUNC(date,[fmt])--date爲日期值,fmt可選參數,指定日期截取方式,默認截取最近日期。

selecttrunc(sysdate,'YY')from dual;--返回當年第一天,2018-1-1

selecttrunc(sysdate,'YYYY')from dual;--返回當年第一天,2018-1-1

selecttrunc(sysdate,'MM')from dual;--返回當月第一天,2018-2-1

selecttrunc(sysdate,'D')from dual;--返回本週第一天,2018-2-4

selecttrunc(sysdate,'DD')from dual;--返回當前年月日,2018-2-6

2、round 函數
 按照給定條件對數值進行四捨五入處理。

語法格式:
ROUND(number,[,decimals])--number,待處理的數值,decimals,小數點後保留的位數,
爲負,則從小數點往前截取。與trunc函數不同的是,round函數需要四捨五入。
 selectround(123.456)from dual;--123

 selectround(123.456,1)from dual;--123.5

 selectround(123.456,-1)from dual;--120
3、ceil和floor函數
ceil函數與floor函數對給定數值取整。
語法格式:

ceil(number)--取大於、等於數值number的最小整數

floor(number) --取小於、等於數值number的最大整數

 selectfloor(123.456)from dual;--123

 selectceil(123.456)fromdual;--124

 selectceil(-123.456)fromdual;---123

 selectfloor(-123.456)fromdual;---124

 ceil處理日期

selectceil((To_date('2018-2-6 16:50:55', 'yyyy-mm-dd hh24-mi-ss') -
To_date('2018-2-6 14:55:24', 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60) 秒數
from dual--6932

如果是24*60則精確到分鐘。ceil(6932)->116'



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