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

 

按小时,分钟,秒;统计之 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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值