SQL 2008 Datensätze älter als . . löschen.

klagges

Neuer Benutzer
Beiträge
3
Hallo zusammen ich habe eine SQL db (MS sql 2008 R2) welche von einer Siemens SPS mittels Wincc gefüttert wird. Diese Hat nach ca. 4 Monaten 25GB. deshalb möchte ich in regelmässigen abständen die ältesten einträgt löschen.

VarName - Varchar
TimeString - Char
VarFalue- float
Time_ms - float

Im Feld TimeString steht das Datum im Format TT.MM.JJJJ SS:MM:SS.

Ich hatte versucht den String zu vergleichen aber das klappt nicht wirklich:

SELECT * FROM P22010_Backup where TimeString >= CONVERT(CHAR(11), GETDATE ( ) - 50, 104) + CONVERT(CHAR(15), GETDATE ( ) - 50, 108);

Weil es ja ein string und kein Datum ist.

PS: im Time_ms ist wohl ein mir unbekannter Timestamp drinnen 43035738694.7454 entspricht dem 27.10.2017 17:43:43

Kann mir evtl. wer nen Tipp geben wie man das lösen könnte ?

Mfg

Klagges
 
Werbung:
Hallo Klagges

Konvertiere mal den TimeString in datetime statt andersrum:

Code:
SELECT
    *
FROM
    P22010_Backup
WHERE
    CONVERT(datetime,TimeString) >= GETDATE() - 50

Gruß
 
Ahh danke das war der Denkfehler von mir :)

Code:
SELECT
    *
FROM
    P22010_Backup
WHERE
    CONVERT(datetime,TimeString, 104) >= GETDATE() - 50

Klappt Super :)
 
Hallo Klagges,

wenn ich mich recht entsinne, kann man doch bei WinCC die maximal größe der DB oder die maximale Anzahl an Datensätze der DB angeben und diese somit zu einem "rollenden" archiv machen. WinCC würde sich dann um dein Problem kümmern.

Gruß
 
Werbung:
@Gunther Ja man kann ein Umlaufarchiv erstellen und er löscht dann alles was älter ist. Allerdings ist die maximal einstellbare Zahl an Datensätzen bei 500.000 oder so. Pro Datenbank. Von Wincc schreibe ich ca. alle 3 sec. einen Temperaturwert. Von einem Bad und das enthält aber 3 Fühler. Also alle 3 sec 3 Datensätze somit Komme ich mit dem Standart Umlaufarchiv nicht sehr weit deswegen schiebe ich z.B. alle 1000. Datensätze in eine "Backup" Datenbank. (wird angehängt) somit habe ich eine endlos aufnahme.
Und um diese zu begrenzen habe ich den Code gebraucht.
Somit kann ich die Daten Auf 1 Jahr begrenzen die db Beträgt dann aber auch schon ca 90GB.
 
Zurück
Oben