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?
謝謝!
中號