Hallo,
meine SQL-Kenntnisse stecken (leider) noch in den Kinderschuhen. Trotzdem habe ich bereits heute ein für mich kniffliges Problem zu lösen. Kann mir bitte jemand helfen?
Die nachstehende Abfrage holt aus einer DB (MS Industrial SQL-Server) Daten von einem Prozessleitsystem. Es werden aber immer nur aktuelle Daten geholt.
Meine Frage ist nun: Wie muss ich den SQL-String verändern, damit ich Daten aus einem historischen Zeitbereich auslesen kann?
Es wäre prima, wenn jemand helfen könnte.
Mit freundlichen Grüßen
DOMO-Paul
„SELECT DateTime, T.TagName, vValue, Quality, QualityDetail FROM Tag T inner remote join History H ON T.TagName = H.TagName
WHERE (T.TagName LIKE ‚%value‘ or T.TagName LIKE ‚%gol‘ or T.TagName LIKE ‚%goh‘ or T.TagName LIKE ‚%sw‘ or T.TagName LIKE ‚%pos‘ or T.TagName LIKE ‚%so‘ or T.TagName LIKE ‚%sal‘ or
T.TagName LIKE ‚%50LSH17510.BAD‘) and (T.TagName not like ‚%H.SW‘ and T.TagName not like ‚%L.SW‘
and T.TagName not like ‚%OVERFLOW.SW‘ and T.TagName not like ‚%REMOTE.VALUE‘ and T.TagName not like ‚%HSG.SW‘) AND vValue is not null and wwRetrievalMode = ‚Delta‘ and DateTime =’“ + odbctime(sectime()) +"’"
Moien
Die nachstehende Abfrage holt aus einer DB (MS Industrial
SQL-Server) Daten von einem Prozessleitsystem. Es werden aber
immer nur aktuelle Daten geholt.
Tipp am Rande: bei SQL hängt es mehr von den eigentlichen Tabellen als vom Server ab was man nun hinschreiben soll. Die Tabellen aus den SQL-Anfragen zusammenraten ist etwas komplex.
Meine Frage ist nun: Wie muss ich den SQL-String verändern,
damit ich Daten aus einem historischen Zeitbereich auslesen
kann?
DateTime gibt das Datum an ?
Also:
"SELECT DateTime, T.TagName, vValue, Quality, QualityDetail
FROM Tag T inner remote join History H ON T.TagName = H.TagName
WHERE
(T.TagName LIKE ‚%value‘
or T.TagName LIKE ‚%gol‘
or T.TagName LIKE ‚%goh‘
or T.TagName LIKE ‚%sw‘
or T.TagName LIKE ‚%pos‘
or T.TagName LIKE ‚%so‘
or T.TagName LIKE ‚%sal‘
or T.TagName LIKE ‚%50LSH17510.BAD‘)
and
(T.TagName not like ‚%H.SW‘
and T.TagName not like ‚%L.SW‘
and T.TagName not like ‚%OVERFLOW.SW‘
and T.TagName not like ‚%REMOTE.VALUE‘
and T.TagName not like ‚%HSG.SW‘)
AND vValue is not null
and wwRetrievalMode = ‚Delta‘
and DateTime =’" +:odbctime(sectime()) +"’"
In der letzten Zeile steht das „Problem“. Lass
„and DateTime =’“ +:odbctime(sectime()) +"’""
mal weg (Tipp: der Server wird dann mal kurz etwas langsam werden. Also nicht auf dem Produktionsserver testen). Und dann teste mal
"and DateTime
Danke für die Hilfe. Das mit dem Zeitstring habe ich hinbekommen. Die Abfrage läuft jetzt.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]