SQL 的日期格式 (OSISOFT PI)你好,
经过一番尝试,我能够从我们的 PI Archive 中获取数据。 我们使用 PI (Osisoft) 来归档我们的过程数据。
通过以下查询,我获得了数据,但时间戳不存在:
SELECT t1.tag, t1.time, t1.value, t1.svalue,
t1.status, t1.flags
FROM picomp t1
WHERE ( ( ( t1.tag = 'AL2_Geschwindigkeit_Linienmotor_Formerstation' ) AND ( (t1.time >= ( '2017/03/05 1:47:16 PM' )) AND (t1.time <= ( '2017/03/05 2:44:40 PM' )) ) ) )
时间戳列为空(数字,连续)。
然后我想到时间戳列不是数字。 我尝试使用以下查询将时间转换为日期:
SELECT t1.tag, TO_Date(SUBSTR (time, 1, 15),'yyyymmdd') time, t1.value, t1.svalue,
t1.status, t1.flags
FROM picomp t1
WHERE ( ( ( t1.tag = 'AL2_Geschwindigkeit_Linienmotor_Formerstation' ) AND ( (t1.time >= ( '2017/03/05 1:47:16 PM' )) AND (t1.time <= ( '2017/03/05 2:44:40 PM' )) ) ) )
但我得到了错误:
[PIODBC] [PIOLEDB] [SUBSTR] (DateTime、Int16、Int16) 参数的重载解析失败。 [SQLSTATE=HY000]
我做错了什么?
有谁能够帮助我?
回复:SQL 的日期格式 (OSISOFT PI)我知道这是一篇旧帖子,但请查看Aveva/OSISoft PI 工具插件,它可以帮助您编写这些查询。
回复:SQL 的日期格式 (OSISOFT PI)好的...现在可以使用以下 SQL
SELECT t1.tag, Cast (time as string) STRING_time, t1.value, t1.svalue,
t1.status, t1.flags
FROM picomp t1
WHERE ( ( ( t1.tag = 'AL2_Geschwindigkeit_Linienmotor_Formerstation' ) AND ( (t1.time >= ( '2017/03/05 1:47:16 PM' )) AND (t1.time <= ( '2017/03/05 2:44:40 PM' )) ) ) )
回复:SQL 的日期格式 (OSISOFT PI)这 ”;”问题仍然存在。 但这不是我的问题。 我可以轻松删除它。
我的问题是我没有时间。 JMP 似乎将时间数据转换为数字。 但在 PI Archive 中,它似乎是一个字符串或相关的东西。 如果我使用 Microsoft Access,我就有时间。 Access 告诉我数据类型是“文本”。 也许我会直接问OSISOFT如何通过SQL获取时间。
回复:SQL 的日期格式 (OSISOFT PI)我觉得 ”;”问题在 13 中得到修复。 您可能想再试一次。 我对 SQL 的标准建议是让查询生成器进行编码。 如果您想将 SQL 嵌入 JSL 应用程序或其他应用程序中,您始终可以在事后将其取出 - 但 QB 会承担繁重的工作,因此您知道它是有效的。
最好的,
中号回复:SQL 的日期格式 (OSISOFT PI)在以下链接下,您将找到 Osisoft 的“;”问题的示例。
https://techsupport.osisoft.com/Troubleshooting/KB/KB01377
回复:SQL 的日期格式 (OSISOFT PI)我使用 JMP Pro 13.1。
我从查询生成器开始。 但我必须切换到“自定义 SQL”。 因为查询生成器中的查询不起作用。 例如,我必须删除查询末尾的“;”。 还有一些其他的事情。 这很烦人但可以管理。
回复:SQL 的日期格式 (OSISOFT PI)这里有几个问题:您是尝试手动编写 SQL 代码还是使用查询生成器? 另外您使用的是哪个版本的 JMP?
谢谢!
中号