在實際工作中,有時候要按時間統計一些數據,但數據庫裏的數據不一定是連續的,按時間分組的話,就會形成時間斷檔,爲了讓顯示的結果能形成連續的時間記錄,
通常的做法就是先形成一個一段時間內連續時間間隔的記錄集,再跟數據庫裏的查詢結果連接就可以了。
下面給出查詢出一段時間內連續時間間隔的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