ITPub博客

首页 > 数据库 > Oracle > 按小时,分钟,秒;统计之 round和trunc区别

按小时,分钟,秒;统计之 round和trunc区别

原创 Oracle 作者:lovehewenyu 时间:2012-04-28 10:32:30 0 删除 编辑
 

按小时,分钟,秒;统计之 round和trunc区别

 

 

时间分割统计:

 

Trunc 时间段

To_char 时间段

Round 时间段

 

 

下面举例按小时统计:

 

以下2种方式的统计结果是一样的。

Select trunc(time,’HH’) ,count(*)  M from table where group by trunc(time,’HH’)  order by M;

Select to_char(time,’YYYYMMDD HH24’),count(*)  M from table where to_char(time,’YYYYMMDD HH24’) order by M;

 

round方式统计的结果和上面的结果不一样:

Select round(time,’HH’),count(*)  M from table where group by round(time,’HH’) order by M;

 

 

疑问? 同样是截取时间统计为什么结果不同呢?

这里我们是分组统计的,结果不一样,有可能我们分的组不一样。我们截取的是时间段,分组不一样也就是表示可能我们截取的时间段有差异。

 

思路:分组结果——》截取时间段——》round 和 trunc 差别。

 

通过分析我们找到了问题的根源:

 

Round 与 trunc

Round 会把截取的时间段,四舍五入。

Trunc 会直接截取掉时间段,保持时间段原始性。这个才是我们想要的。所以我们采用TRUNC是正确的。

 

总结:我们按时间统计结果用 TRUNC和ROUND函数,除了不能按秒来统计外,其余时间都可以。如果你想用秒统计,可以直接采取TO_CHAR 就可以了 to_char(time,’yyyymmdd hh24:mi:ss’)。

 

 

下面是 sunhj000java 总结的一段有关 ROUND 和 TRUNC函数的区别。 感谢他

http://sunhj.iteye.com/blog/307662

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26442936/viewspace-722415/,如需转载,请注明出处,否则将追究法律责任。

上一篇: DG 主库丢失归档
请登录后发表评论 登录
全部评论
Oracle,Mysql,EMC 存储,NBU备份

注册时间:2012-02-03

  • 博文量
    267
  • 访问量
    1270761