Vinzenz Mai: MS SQL - Abfrage mit Between (Datum)

Beitrag lesen

Hallo Sonic,

ich habe Datumsfelder in meiner DB, die ein de-Format haben: tt.mm.jjjj hh:mm:ss

also keine Felder vom Datentyp DATETIME oder SMALLDATETIME, sondern von einem Zeichenkettentyp, z.B. CHAR oder VARCHAR?

Nun habe ich die Funktion "Between" benutzt und bekomme falsche Datensätze geliefert. Liegt das am deutschen Format? Wenn ja, wie kann ich die Daten in der Abfrage ins eng?? ..konvertieren?

Du hast neulich die Funktion CONVERT kennengelernt. CONVERT() oder auch CAST() könntest Du verwenden, um in einer Abfrage die vorhandenen Daten in den Datentyp DATETIME umzuwandeln. Mit dem Operator BETWEEN kannst Du nun die berechneten Daten in der Abfrage eingrenzen.

Die Daten in der DB sollen unberührt bleiben.

Das typische Problem: Obwohl die Daten in einem ungeeigneten Format vorliegen, mit dem sich datenbanktechnisch nicht gut arbeiten lässt, müssen sie unberührt bleiben. Du könntest in einer neuen Tabelle mit DATETIME arbeiten und Dir einen View erstellen, der den Namen der bisherigen Tabelle trägt und in dem die Daten (über CONVERT) im alten Format "vorliegen".

Freundliche Grüße

Vinzenz