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

MAS*_*AS1 3 sql database oracle

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

任何人都可以帮助我.

我想要查询,因为我的数据库大小很大,所以需要更少的时间来获取数据.

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

OMG*_*ies 9

使用TO_CHAR函数格式化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')
Run Code Online (Sandbox Code Playgroud)

  • @ MAS1不是连接,它使用表别名.如果您只查找当天的数据,可以在`FROM`和`GROUP BY`子句之间添加`WHERE t.time BETWEEN TRUNC(sysdate)和TRUNC(sysdate + 1)`; 或者您可以参数化以使用您传入的日期. (2认同)
  • @Alex我认为你的意思是(sysdate + 1)那里(不是+10) (2认同)
  • @ MAS1:冒着明显的风险,如果你桌子上的时间字段上还没有索引,你应该加一个索引.如果查询仍然需要太长时间,请在表格上考虑当前日期数据的单独分区. (2认同)