oracle 查询出一段时间内连续时间间隔的记录集

在实际工作中,有时候要按时间统计一些数据,但数据库里的数据不一定是连续的,按时间分组的话,就会形成时间断档,为了让显示的结果能形成连续的时间记录,

通常的做法就是先形成一个一段时间内连续时间间隔的记录集,再跟数据库里的查询结果连接就可以了。

下面给出查询出一段时间内连续时间间隔的SQL语句:

SELECT to_date('2013-10-01', 'yyyy-mm-dd') +
       numtodsinterval(rownum - 1, 'hour')
  FROM DUAL
CONNECT BY ROWNUM <= ((to_date('2013-10-02', 'yyyy-mm-dd') -
           to_date('2013-10-01', 'yyyy-mm-dd') + 1) * 24)

结果如下:

1	2013/10/1
2	2013/10/1 1:00:00
3	2013/10/1 2:00:00
4	2013/10/1 3:00:00
5	2013/10/1 4:00:00
6	2013/10/1 5:00:00
7	2013/10/1 6:00:00
8	2013/10/1 7:00:00
9	2013/10/1 8:00:00
10	2013/10/1 9:00:00
11	2013/10/1 10:00:00
12	2013/10/1 11:00:00
13	2013/10/1 12:00:00
14	2013/10/1 13:00:00
15	2013/10/1 14:00:00
16	2013/10/1 15:00:00
17	2013/10/1 16:00:00
18	2013/10/1 17:00:00
19	2013/10/1 18:00:00
20	2013/10/1 19:00:00
21	2013/10/1 20:00:00
22	2013/10/1 21:00:00
23	2013/10/1 22:00:00
24	2013/10/1 23:00:00
25	2013/10/2
26	2013/10/2 1:00:00
27	2013/10/2 2:00:00
28	2013/10/2 3:00:00
29	2013/10/2 4:00:00
30	2013/10/2 5:00:00
31	2013/10/2 6:00:00
32	2013/10/2 7:00:00
33	2013/10/2 8:00:00
34	2013/10/2 9:00:00
35	2013/10/2 10:00:00
36	2013/10/2 11:00:00
37	2013/10/2 12:00:00
38	2013/10/2 13:00:00
39	2013/10/2 14:00:00
40	2013/10/2 15:00:00
41	2013/10/2 16:00:00
42	2013/10/2 17:00:00
43	2013/10/2 18:00:00
44	2013/10/2 19:00:00
45	2013/10/2 20:00:00
46	2013/10/2 21:00:00
47	2013/10/2 22:00:00
48	2013/10/2 23:00:00


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值