oracle日期分组查询的完整实例

春天到了,各种绚丽的花朵都开放了,金黄的油菜花,成了蝴蝶的天地,美丽的蝴蝶在金黄色的舞台上跳着柔和而优美的舞姿。它们一会儿在空中飞舞,一会儿静静地停留在油菜花上。给春天增添了不少乐趣。油菜花的美丽,同时也吸引了不少 "劳动人民 "——蜜蜂,它们总是不分昼夜地不辞辛劳地给油菜花授粉。偶尔一阵微风吹来,金黄的油菜花立刻涌起了高低起伏的 "金浪花 "。远远望去,真是美不胜收!

前言

在做数据报表时,需要对某一时间段分组,以1小时为时间间隔统计各项数据,如9点-10点,10点-11点…,但是现在有种情况,时间有可能不是整点开始,会有半点的情况,9点30,需要按照9点30-10点30,10点30-11点30分组统计

实现

以时间范围起始时间作为参照时间,计算与其差值(分)/所需时间间隔(1小时) 得出值作为分组依据。

例子

 select xx, 
  floor(
  floor(
   (refDate-to_date('2021-02-05 08:30','yyyy-MM-dd hh24:mi:ss'))
   * 24 * 60) / 60
  ) factor
where refDate >=to_date('2021-02-05 08:30','yyyy-MM-dd hh24:mi:ss') 
 and refDate <=....

floor:取整用

refDate:每条数据中的日期字段

2021-02-05 08:30:参照时间

factor:算出的分组依据

以上查询范围是21:30-23:30,以21.30作为参照时间,可将时间段划分为21.30-22:30,22:30-23:30。。

在此基础上查询时间所属时间段

以上通过 factor/24 含义为间隔一小时, 可以通过改变这两个值任意组合时间间隔。

总结

到此这篇关于oracle日期分组查询的文章就介绍到这了,更多相关oracle日期分组查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能有感兴趣的文章
Oracle缩表空间的完整如何解决实例

详解Oracle控制文件及日志文件的管理问题

oracle指定类型和指定位数创建序列号的代码详解

Oracle官方工具SQLDeveloper的简单如何使用

Oracle中锁(lock)的用法