Oracle-trunc函数、round 函数、ceil函数和floor函数---处理数字函数使用

0、round函数

按照指定小数位数进行四舍五入运算。

SELECT ROUND( number, [ decimal_places ] ) FROM DUAL #number : 待处理数值  decimal_places  四舍五入 , 小数取几位 ( 预设为 0 )。

例子 :
select round(123.456, 0)  from dual   -- 123
select round(123.456, 1)  from dual   -- 123.5
select round(-123.456, 2)  from dual   -- -123.46
 

1、trunc函数处理数字

trunc函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

TRUNC(number,[decimals]) #number 待处理数值  decimals 需保留小数点后面的位数(可选项,忽略它则去掉所有的小数部分 )。

例子 :

select trunc(123.458) from dual --123

select trunc(123.458,0) from dual --123

select trunc(123.458,1) from dual --123.4

select trunc(123.458,-1) from dual --120

select trunc(123.458,-4) from dual --0

select trunc(123.458,4) from dual --123.458

select trunc(123) from dual --123

select trunc(123,1) from dual --123

select trunc(123,-1) from dual --120

注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推;如果所设置的参数为负数,且负数的位数大于或等于整数的字节数的话,则返回为0。
如:TRUNC(89.985,-3)=0。

2、trunc函数处理日期

trunc函数返回以指定元素格式截取一部分的日期值。

TRUNC(date,[fmt])   #date为必要日期  fmt日期格式,以指定格式来截取输入的日期值(可忽略,忽略它则由最近的日期截去)。

例子 :

select trunc(sysdate) from dual --2017/6/13  返回当天的日期

select trunc(sysdate,'yyyy') from dual   --2017/1/1  返回当年第一天.

select trunc(sysdate,'mm') from dual  --2017/6/1  返回当月第一天.

select trunc(sysdate,'d') from dual  --2017/6/11 返回当前星期的第一天(以周日为第一天).

select trunc(sysdate,'dd') from dual  --2017/6/13  返回当前年月日

select trunc(sysdate,'hh') from dual  --2017/6/13 13:00:00  返回当前小时

select trunc(sysdate,'mi') from dual  --2017/6/13 13:06:00  返回当前分钟

3.ceil和floor函数

ceil(n)   取大于等于数值n的最小整数

floor(n) 取小于等于数值n的最大整数 

例子 :

select floor(sysdate - hiredate) "入职天数",ename from  emp; #显示员工入职天数。
or
select trunc(sysdate - hiredate) "入职天数",ename from  emp;
 
原文地址:https://www.cnblogs.com/Formulate0303/p/12463812.html