Oracle中trunc、round 、ceil和floor函式的區別
阿新 • • 發佈:2018-12-20
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,小數點後保留的位數, 為負,則從小數點往前擷取。
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'