sql 查询连续数据缺少的数据
表ABC
字段:
id time anli
1 2013/1/29 14:20:00 10
2 2013/1/29 14:25:00 40
3 2013/1/29 14:30:00 15
4 2013/1/29 14:35:00 10
5 2013/1/29 14:45:00 11
6 2013/1/29 15:05:00 36
现在的情况是anli的值是5分钟一个数据自动入库的,但是他中间有的时候会丢失数据,比如第4条到第5条之间缺一条2013/1/29 14:40:00的数据 第5条到第6条间缺3条数据,现在用SQL查出这里缺的数据并显示缺数的时间,请高手帮忙,我是VB弄的小程序来查的,但是弄到这里就不懂了
'首先查询到最大和最小值 Dim dt As DateSet rs = cn.Execute("SELECT Min([time]) As mintime, Max([time]) As maxtime FROM ABC") '然后循环查询 For dt = rs!mintime To rs!maxtime Stemp CDate("00:05:00") Set rs = cn.Execute("SELECT * FROM ABC WHERE [time] = #" & Format(dt, "yyyy-mm-dd HH:nn:ss") & "#") If rs.EOF Then Debug.Print Format(dt, "yyyy-mm-dd HH:nn:ss") Next dt
For dt = rs!mintime To rs!maxtime Step CDate("00:05:00")
分别取出相邻的时间的时H和分M 换算成分 h*60+m h1*60+m1
((h1*60+m1)-(h*60+m))/5-1
循环..... For dt = rs!mintime To rs!maxtime Step CDate("00:05:00")
从数据库表中查到的最小时间,循环到最大时间,步长是 5 分钟。
当然,由于最小时间和最大时间是数据库中查到的,必定存在,似乎不必查对。仅仅是为了简单而已。
实际上,从最小时间 + 5 分钟,循环到最大时间 - 5 分钟即可。