【问题标题】:How to add minutes to a timestamp?如何将分钟添加到时间戳?
【发布时间】:2013-10-09 07:17:52
【问题描述】:

我有一个表格,其中包含 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 分钟级别的数据。

【问题讨论】:

    标签: sql oracle timestamp


    【解决方案1】:

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

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

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

    我假设您的专栏名称实际上不是COUNT。如果是,我建议将其更改为不是关键字的内容。

    【讨论】:

      【解决方案2】:

      这样试试,

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-22
        • 2016-09-04
        • 2020-07-02
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多