系统时间跨夜所影响,00:00误报漏检!

q85958341 2009-08-05 09:14:25
现在有这么个系统:

20:00 90 //超过90分钟后报漏检
22:00 30 //超过30分钟后报漏检
23:00 30 //超过30分钟后报漏检
00:00 30 //超过30分钟后报漏检
01:00 30 //超过30分钟后报漏检
02:00 30 //超过30分钟后报漏检
03:00 30 //超过30分钟后报漏检
04:00 30 //超过30分钟后报漏检
05:00 60 //超过60分钟后报漏检

以上为巡检时间
问题:00:00 之后的几秒内 误报漏检。

我进行了测试:(修改系统时间,设备时间)
设置21:26
21:30:05 漏检


设置23:26
23:30:25 漏检

设置00:27
未报漏检


设置23:58
00:00:08 漏检



问题很真的存在。

00:00 30
01:00 30
02:00 30
03:00 30
04:00 30
05:00 60
20:00 90
22:00 30
23:00 30

之后考虑到可能系统时间跨夜所影响,对时间表做了修改!
可问题依然存在!!

各位有没类似问题解决方案,帮小弟把~~
...全文
104 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
q85958341 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wdgphc 的回复:]
检测判断的代码?
[/Quote]

不全是..
那条SQL 是用SQL2000事件探索器 查看到得


发现系统是现成获得到日期,然后对数据库巡检时间 拼装,再进行查询

wdgphc 2009-08-05
  • 打赏
  • 举报
回复
检测判断的代码?
q85958341 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cpp2017 的回复:]
他这个循环是在哪里做的?程序,还是?
如果用个定时器应该不会有这个问题.

有一种可能性.

他判断时间间隔的时候,加上小时一起算.但不按天算.


但跨了天了,00:30 时间加起来比原来的还小,肯定达不到那个时间间隔.



[/Quote]

这些时间是 数据表里数据
巡检时间 延迟
00:00 30 //超过30分钟后,没有人去刷卡,报道,即报漏检
01:00 30 //超过30分钟后,没有人去刷卡,报道,即报漏检
02:00 30 //超过30分钟后,没有人去刷卡,报道,即报漏检
03:00 30 //超过30分钟后,没有人去刷卡,报道,即报漏检
04:00 30 //超过30分钟后,没有人去刷卡,报道,即报漏检
05:00 60 //超过60分钟后,没有人去刷卡,报道,即报漏检

他会获得当前时间,进行比较!
select ('2009-08-13'+' '+plantime) as plantime,('2009-08-13'+' '+plantime_s) as plantime_s,('2009-08-13'+' '+plantime_e) as plantime_e
from LP_TIMEPLAN
where ('2009-08-13'+' '+plantime_e)>='2009-08-13 23:30:03'
and lpno = '74' order by plantime

查询无记录


select ('2009-08-14'+' '+plantime) as plantime,('2009-08-14'+' '+plantime_s) as plantime_s,('2009-08-14'+' '+plantime_e) as plantime_e
from LP_TIMEPLAN
where ('2009-08-14'+' '+plantime_e)>='2009-08-14 00:00:09'
and lpno = '76' order by plantime



问题果然无法跨夜。。。。
您有没好的提示,




cpp2017 2009-08-05
  • 打赏
  • 举报
回复
他这个循环是在哪里做的?程序,还是?
如果用个定时器应该不会有这个问题.

有一种可能性.

他判断时间间隔的时候,加上小时一起算.但不按天算.


但跨了天了,00:30 时间加起来比原来的还小,肯定达不到那个时间间隔.


q85958341 2009-08-05
  • 打赏
  • 举报
回复
设置00:27
未报漏检


设置23:58
00:00:08 漏检


只有0点,不正常,
凭您经验,能不能估计,大概哪问题?SQL?
cpp2017 2009-08-05
  • 打赏
  • 举报
回复
没有代码不好查错.
q85958341 2009-08-05
  • 打赏
  • 举报
回复
上头现在只给了系统和数据库!
让我查出问题所在...
cpp2017 2009-08-05
  • 打赏
  • 举报
回复
你的代码是怎么写的?
soaringbird 2009-08-05
  • 打赏
  • 举报
回复
省下那个日期不存干什么
q85958341 2009-08-05
  • 打赏
  • 举报
回复
select min(abs(DATEDIFF(minute,CAST(c.plantime AS smalldatetime ),'1900-01-01 0:0'))) AS 

plantime1,c.plantime
from LP_DAYCLASSDTL a,LP_CLASSROAD b,LP_TIMEPLAN c
where a.dayclassid = '1'
and a.classid = b.classid
and b.lpno = c.lpno
and b.potno = c.potno
and b.lpno = '74'
group by c.plantime
order by plantime1 asc


显示结果
plantime1 plantime
0 00:00
60 01:00
120 02:00
180 03:00
240 04:00
300 05:00
1200 20:00
1320 22:00
1380 23:00


min(abs(DATEDIFF(minute,CAST(c.plantime AS smalldatetime ),'1900-01-01 0:0'))) AS plantime1

这句什么用,距离0点多少分钟?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧