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;