zoukankan      html  css  js  c++  java
  • 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]),只是要做四舍五入

  • 相关阅读:
    简介Doxygen
    以太网的惊人新应用:代替电源线传输电力
    STM32开源开发环境的搭建
    连载第1章绪论 1.1嵌入式系统概述
    连载第2章 嵌入式系统工程设计概述
    STM32固件库详解
    Windows8ConsumerPreview 虚拟机安装与体验
    连载第1章绪论 1.2嵌入式处理器
    通过内存盘提高MSMQ的消息吞吐能力
    使用队列和线程对现有asp.net动态页处理进行资源控制
  • 原文地址:https://www.cnblogs.com/deepbreath/p/5183893.html
Copyright © 2011-2022 走看看