如何以小时为单位从oracle数据库中获取数据

时间:2010-10-07 15:41:59

标签: sql database oracle

我的数据库中有一个表是mytable,其中的内容请求来自其他来源。此表中有一列为Time,它在收到请求时存储日期和时间(例如,2010/07/10 01:21:43)。现在我想每小时从这个表中获取数据。意味着我希望数据库在一天中的每个小时内收到数量。例如,从1点钟到2点钟,计数是50 ..像这样..我会在一天结束时运行这个查询。因此,我会按小时收到一天中收到的请求。

任何人都可以帮助我。

我想要查询,因为我的数据库大小很大,所以查询数据的时间会更短。

任何比OMG小马更回答的方式。

3 个答案:

答案 0 :(得分:8)

使用TO_CHAR function格式化DATETIME列,以便您可以将GROUP BY用于聚合函数:

  SELECT TO_CHAR(t.time, 'YYYY-MM-DD HH24') AS hourly,
         COUNT(*) AS numPerHour
    FROM YOUR_TABLE t
GROUP BY TO_CHAR(t.time, 'YYYY-MM-DD HH24')

答案 1 :(得分:2)

为什么不创建另一个存储计数和日期的表。创建一个每小时运行一次的数据库作业,并将count和sysdate放在新表中。您的代码只是查询新表。

create table ohtertable_count (no_of_rows number, time_of_count date);

每小时运行一次的数据库作业就像

insert into othertable_count 
select count(1), sysdate
from othertable;
您将查询表othertable_count而不是查询原始表。

答案 2 :(得分:0)

SELECT To_char(your_column, 'YYYY-MM-DD HH24') AS hourly, 
       Count(*)                              AS numPerHour 
FROM   your_table 
WHERE  your_column > '1-DEC-18' 
       AND your_column < '4-DEC-18' 
GROUP  BY To_char(your_column, 'YYYY-MM-DD HH24') 
ORDER  BY hourly;