Datumsformat für ein SQL (OSISOFT PI)Hallo,
Nach einigen Versuchen gelang es mir, Daten aus unserem PI-Archiv zu erhalten. Zur Archivierung unserer Prozessdaten nutzen wir PI (Osisoft).
Mit der folgenden Abfrage habe ich die Daten erhalten, aber der Zeitstempel ist nicht vorhanden:
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' )) ) ) )
Die Spalte für den Zeitstempel ist einfach leer (numerisch, kontinuierlich).
Dann kam mir die Idee, dass die Spalte für den Zeitstempel nicht numerisch ist. Ich habe versucht, die Uhrzeit mit der folgenden Abfrage in ein Datum umzuwandeln:
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' )) ) ) )
Aber da habe ich den Fehler bekommen:
[PIODBC] [PIOLEDB] [SUBSTR] Überladungsauflösung für (DateTime, Int16, Int16) Argument(e) fehlgeschlagen. [SQLSTATE=HY000]
Was habe ich falsch gemacht?
Kann mir jemand helfen?
Betreff: Datumsformat für eine SQL (OSISOFT PI)Ich weiß, dass dies ein alter Beitrag ist, aber schauen Sie sich den an Aveva/OSISoft PI Tools Add-in, es kann Ihnen beim Schreiben dieser Abfragen helfen.
Betreff: Datumsformat für eine SQL (OSISOFT PI)Ok...jetzt funktioniert es mit dem folgenden 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' )) ) ) )
Betreff: Datumsformat für eine SQL (OSISOFT PI)Der ";" Das Problem ist immer noch da. Aber das ist nicht mein Problem. Ich kann es problemlos löschen.
Mein Problem ist, dass ich keine Zeit dafür habe. Es scheint, dass JMP die Zeitdaten in numerische Werte umwandelt. Aber im PI-Archiv scheint es sich um eine Zeichenfolge oder etwas Relatives zu handeln. Wenn ich Microsoft Access verwende, bekomme ich die Zeit. Access sagt mir, dass der Datentyp „Text“ ist. Vielleicht werde ich OSISOFT direkt fragen, wie ich die Zeit per SQL ermitteln kann.
Betreff: Datumsformat für eine SQL (OSISOFT PI)Ich denke der ";" Das Problem wurde in 13 behoben. Vielleicht möchten Sie es noch einmal versuchen. Mein Standardratschlag für SQL ist, die Codierung dem Query Builder zu überlassen. Wenn Sie SQL in eine JSL-Anwendung oder etwas anderes einbetten möchten, können Sie es jederzeit nachträglich herausziehen – aber der QB übernimmt die schwere Arbeit, damit Sie wissen, dass es funktioniert.
Am besten,
MBetreff: Datumsformat für eine SQL (OSISOFT PI)Unter folgendem Link finden Sie ein Beispiel für dieses „;“-Problem von Osisoft.
https://techsupport.osisoft.com/Troubleshooting/KB/KB01377
Betreff: Datumsformat für eine SQL (OSISOFT PI)Ich verwende JMP Pro 13.1.
Ich beginne mit dem Abfrage-Builder. Ich muss aber auf „Custom SQL“ umsteigen. Weil die Abfrage vom Query Builder nicht funktioniert. Zum Beispiel muss ich das „;“ am Ende der Abfrage löschen. Und es gibt noch einige andere Dinge. Das ist ärgerlich, aber beherrschbar.
Betreff: Datumsformat für eine SQL (OSISOFT PI)Hier ein paar Fragen: Versuchen Sie, die SQL manuell zu codieren oder den Query Builder zu verwenden? Und welche Version von JMP verwenden Sie?
Danke!
M