1. 程式人生 > >Oracle中trunc、round 、ceil和floor函式的區別

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)from dual ; ---123
 selectfloor(-123.456)from dual ; ---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'