在实际工作中,有时候要按时间统计一些数据,但数据库里的数据不一定是连续的,按时间分组的话,就会形成时间断档,为了让显示的结果能形成连续的时间记录,
通常的做法就是先形成一个一段时间内连续时间间隔的记录集,再跟数据库里的查询结果连接就可以了。
下面给出查询出一段时间内连续时间间隔的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