恭喜,你发布的帖子
发布于 2017-04-01 14:54:30
4楼
由于没有你的代码,查找了网上的教程脚本
'查询启止时间
sStart = Year(DTPicker1.Value) & "-" & Month(DTPicker1.Value) & "-" & Day(DTPicker1.Value) & " " & Hour(DTPicker1.Value) & ":" & Minute(DTPicker1.Value) & ":" & Second(DTPicker1.Value)
sStop = Year(DTPicker2.Value) & "-" & Month(DTPicker2.Value) & "-" & Day(DTPicker2.Value) & " " & Hour(DTPicker2.Value) & ":" & Minute(DTPicker2.Value) & ":" & Second(DTPicker2.Value)
'转为UTC时间
sStart = DateAdd("h", -8, CDate(sStart))
sStop = DateAdd("h", -8, CDate(sStop))
调试过程中发现:查询时间得到的变量sStart和sStop 输出值为2017-04-01 08:08:08,但在转换为UTC时间时sStart和sStop变量经过DateAdd函数转换后,输出值为2017/04/01 00:08:08,并且之后无法查询到变量值。但如果屏蔽转换步骤,直接输入修正后的查询时间仍然可以获得数据库中的变量值。
因此怀疑:在使用sSql = "Tag:R,('ProcessValueArchive\" & AAA & "'),'" & sStart & "','" & sStop & "' order by datetime"指令时由于时间样式不符合要求而不能正确查询。
通过尝试发现:更改区域和语言中的日期和时间格式为yyyy-mm-dd后(更改之前日期格式为yyyy/M/d),DateAdd函数转换后就可以输出正确的时间样式,进而可以查询到数据了。在这个更改之前也尝试了更改WinCC的显示语言,不确定是不是由于语言不同导致WinCC使用不同国家的日期时间样式对变量进行归档,对详细的数据库原理还是不太懂。
希望可以帮助到你哈。
请填写推广理由:
分享
只看
楼主