Datenbankabfrage in Vergangenheit

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]