如何在时间戳上添加分钟?

时间:2013-10-09 07:17:53

标签: sql oracle timestamp

我有一张表格,其间隔5分钟,即5 10 15 20 ...

该表有3列(id号,log_ts日期,计数),并且有数百万行。到目前为止,我一直在使用以下查询来总结特定日期的“计数”列。

我需要在每小时级别汇总

select id, SUM(count)
     log_ts + DECODE(TO_CHAR(log_ts , 'MI'), '05', 55/1440, '10', 50/1440, '15', 45/1440, '20',40/1440,'25',35/1440,'30',30/1440,'35',25/1440,'40',20/1440,'45',15/1440,'50',10/1440,'55',5/1440,0) TS
from example_table 
Group by id,
log_ts + DECODE(TO_CHAR(log_ts , 'MI'), '05', 55/1440, '10', 50/1440, '15', 45/1440, '20',40/1440,'25',35/1440,'30',30/1440,'35',25/1440,'40',20/1440,'45',15/1440,'50',10/1440,'55',5/1440,0)

是否有其他方法可以在小时级别聚合时间列,其中包含5分钟级别的数据。

2 个答案:

答案 0 :(得分:2)

您需要使用TRUNC(),它可以截断日期/数字等到指定的时间单位。

每小时,format modelHH。这使您的查询:

select trunc(log_ts, 'HH'), sum(count)
  from example_table
 group by trunc(log_ts, 'HH')

我认为您的列的名称实际上不是COUNT。如果是,我建议将其更改为非关键字。

答案 1 :(得分:0)

试试这个,

SELECT id, trunc(log_ts, 'HH'), sum(count)
FROM   example_table
GROUP BY id, trunc(log_ts, 'HH');