按小時,分鐘,秒;統計之 round和trunc區別

lovehewenyu發表於2012-04-28
 

按小時,分鐘,秒;統計之 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章