Oracle trunc和round的区别

1、关于trunc 和round函数比较

整体概括:

round函数 四舍五入
trunc函数 直接截取

对于时间:

Round函数对日期进行“四舍五入”,Trunc函数对日期进行截取。如果我们不指定格式的话,Round会返回一个最接近date参数的日期,而Trunc函数只会简单的截取时分秒部分,返回年月日部分

对于数字:

Round函数对数字同样进行“四舍五入”,Trunc函数截取时不进行四舍五入,可以指明保留小数点后面的位数。

2、Round、Trunc用法

[sql]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
    1. /**************************For date****************************/  
    2. --Trunc函数  
    3. SELECT TRUNC(SYSDATE), -- 今天的日期为  2014-05-08  
    4.        TRUNC(SYSDATE, 'YYYY'), --返回当年第一天 2014-01-01  yyyy/yy/year 年  
    5.        TRUNC(SYSDATE, 'MM'), --返回当月第一天  2014-05-01   mm/month     月  
    6.        TRUNC(SYSDATE, 'DD'), --返回当前年月日 2014-05-08    d/day        周  
    7.        TRUNC(SYSDATE, 'D'), --(星期天)返回当前星期的第一天 2014-05-04  
    8.        TRUNC(SYSDATE, 'HH'), --返回当前时间精确小时  2014-05-08 11:00:00  
    9.        TRUNC(SYSDATE, 'MI') -- 返回当前时间精确分钟  2014-05-08 11:06:00  TRUNC()函数没有秒的精确    
    10.   FROM DUAL;  
    11. --Round函数  
    12. select Round(sysdate, 'Q') Rnd_Q, --2014-04-01  
    13.        Round(sysdate, 'Month') Rnd_Month, --2014-05-01  
    14.        Round(sysdate, 'WW') Rnd_Week, --2014-05-07  
    15.        Round(sysdate, 'W') Rnd_Week_again, --2014-05-08  
    16.        Round(sysdate, 'DDD') Rnd_day, --2014-05-08  
    17.        Round(sysdate, 'DD') Rnd_day_again, --2014-05-08  
    18.        Round(sysdate, 'DAY') Rnd_day_of_week, --2014-05-11  
    19.        Round(sysdate, 'D') Rnd_day_of_week_again, --2014-05-11  
    20.        Round(sysdate, 'HH12') Rnd_hour_12, --2014-05-08 12:00:00  
    21.        Round(sysdate, 'HH24') Rnd_hour_24, --2014-05-08 12:00:00  
    22.        Round(sysdate, 'MI') Rnd_minute --2014-05-08 11:52:00  
    23.   from dual;  
    24.   
    25. /****************************For number************************/  
    26. /**  
    27. --TRUNC(number,num_digits)   
    28. Number 需要截尾取整的数字。   
    29. Num_digits  指明需保留小数点后面的位数。可选项,忽略他则截去任何的小数部分,Num_digits 的默认值为 0,  
    30. --此参数够为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。  
    31. TRUNC()函数截取时不进行四舍五入**/  
    32. --TRUNC函数  
    33. select TRUNC(123.458), --123  
    34.        TRUNC(123.458, 0), --123  
    35.        TRUNC(123.458, 1), --123.4  
    36.        TRUNC(123.458, 2), --123.45  
    37.        TRUNC(123.458, 3), --123.458  
    38.        TRUNC(123.458, 4), --123.458  
    39.        TRUNC(123.458, -1), --120  
    40.        TRUNC(123.458, -2), --100  
    41.        TRUNC(123.458, -3), --0  
    42.        TRUNC(123.458, -4), --0  
    43.        TRUNC(123), --123  
    44.        TRUNC(123, 1), --123  
    45.        TRUNC(123, 2), --123  
    46.        TRUNC(123, 3), --123  
    47.        TRUNC(123, 4) --123  
    48.   from dual;  
    49. --Round函数  
    50. select Round(123.458), --123  
    51.        Round(123.458, 0), --123  
    52.        Round(123.458, 1), --123.5  
    53.        Round(123.458, 2), --123.46  
    54.        Round(123.458, 3), --123.458  
    55.        Round(123.458, 4), --123.458  
    56.        Round(123.458, -1), --120  
    57.        Round(123.458, -2), --100  
    58.        Round(123.458, -3), --0  
    59.        Round(123.458, -4), --0  
    60.        Round(123), --123  
    61.        Round(123, 1), --123  
    62.        Round(123, 2), --123  
    63.        Round(123, 3), --123  
    64.        Round(123, 4) --123  
    65. from dual;  

 

 

 

round(x[,y]) 
【功能】返回四舍五入后的值 
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位。 
【返回】数字 
【示例】 select round(5555.6666,2.1),round(5555.6666,-2.6),round(5555.6666) from dual; 
返回: 5555.67 , 5600 , 5556 
【相近】trunc(x[,y]) 返回截取后的值,用法同round(x[,y]),只是不四舍五入 

trunc(x[,y]) 
【功能】返回x按精度y截取后的值 
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则截取到y位小数,如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。 
【返回】数字 
【示例】 select trunc(5555.66666,2.1),trunc(5555.66666,-2.6),trunc(5555.033333) from dual; 
返回:5555.66 5500 5555 
【相近】round(x[,y]) 返回截取后的值,用法同trunc(x[,y]),只是要做四舍五入

转载于:https://www.cnblogs.com/deepbreath/p/5183893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值