在实际工作中,有时候要按时间统计一些数据,但数据库里的数据不一定是连续的,按时间分组的话,就会形成时间断档,为了让显示的结果能形成连续的时间记录,
通常的做法就是先形成一个一段时间内连续时间间隔的记录集,再跟数据库里的查询结果连接就可以了。
下面给出查询出一段时间内连续时间间隔的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)
结果如下:
12013/10/1
22013/10/1 1:00:00
32013/10/1 2:00:00
42013/10/1 3:00:00
52013/10/1 4:00:00
62013/10/1 5:00:00
72013/10/1 6:00:00
82013/10/1 7:00:00
92013/10/1 8:00:00
102013/10/1 9:00:00
112013/10/1 10:00:00
122013/10/1 11:00:00
132013/10/1 12:00:00
142013/10/1 13:00:00
152013/10/1 14:00:00
162013/10/1 15:00:00
172013/10/1 16:00:00
182013/10/1 17:00:00
192013/10/1 18:00:00
202013/10/1 19:00:00
212013/10/1 20:00:00
222013/10/1 21:00:00
232013/10/1 22:00:00
242013/10/1 23:00:00
252013/10/2
262013/10/2 1:00:00
272013/10/2 2:00:00
282013/10/2 3:00:00
292013/10/2 4:00:00
302013/10/2 5:00:00
312013/10/2 6:00:00
322013/10/2 7:00:00
332013/10/2 8:00:00
342013/10/2 9:00:00
352013/10/2 10:00:00
362013/10/2 11:00:00
372013/10/2 12:00:00
382013/10/2 13:00:00
392013/10/2 14:00:00
402013/10/2 15:00:00
412013/10/2 16:00:00
422013/10/2 17:00:00
432013/10/2 18:00:00
442013/10/2 19:00:00
452013/10/2 20:00:00
462013/10/2 21:00:00
472013/10/2 22:00:00
482013/10/2 23:00:00