Entwickler-Ecke

Datenbanken - Stringkonvertierung in einer Select-Abfrage


Jacer - Mi 28.10.09 13:24
Titel: Stringkonvertierung in einer Select-Abfrage
Morgen mal wieder :D

Hab folgendes Problem:
In einer Datenbank in 2 verschiedenen Spalten sind 2 Datumswerte als String gespeichert.
Des Weiteren habe ich 2 andere Werte, welche hierbei aber keine allzu große Rolle spielen.

Ich versuche also eine Suche zu programmieren.
Über "SELECT * FROM Test.db WHERE" bestimme ich welche Datensätze ausgelesen werden sollen.
Mit den 2 Standard-String-Werten funktioniert das wunderbar.

Nur muss ich während dieser Select-Anweisung irgendwie das in der Datenbank gespeicherte Datum mit meinem Such-Datum vergleichen.
Dazu muss ich diese ja in TDate umwandeln.

Meine Frage: Bekomme ich die Umwandlung und Überprüfung während der Select-Anweisung hin? Oder muss ich jeden Datensatz auslesen, die Daten umwandeln und überprüfen?


jasocul - Mi 28.10.09 13:52

Sind die Datums-Felder in der Datenbank wirklich als String-Felder definiert?

Also ich würde die SQL-Abfrage einfach richtig definieren.

z.B.:

SQL-Anweisung
1:
where MeinDatum = DatenbankDatum                    

oder so ähnlich.
Eventuell musst du noch Umwandlungen des Datums durchführen, damit die Datenbank dein Datum richtig interpretiert. Also nicht das DB-Datum in TDate wandeln, sondern genau umgekehrt: Dein Vergleichs-Datum in das DB-lesbare Format wandeln.

Welche Funktion das ist, hängt von der eingesetzten Datenbank ab.

Scheinbar benutzt du Paradox (-> Test.db). Leider weiß ich nicht mehr, wie die Funktion dort heißt.


Jacer - Mi 28.10.09 14:03

Ja das Datum ist in der Paradox7-Datenbank definitiv als String im Format DD.MM.YYYY eingespeichert.

Mein Problem ist, dass ich nicht nur auf eine exakte Übereinstimmung überprüfen muss, das würde ja mit DatumDatenbank = DatumSuche auch als String funktionieren.
Ich muss auch überprüfen ob ein Datum größer/kleiner als das andere ist.


jasocul - Mi 28.10.09 14:49

user profile iconJacer hat folgendes geschrieben Zum zitierten Posting springen:
Ja das Datum ist in der Paradox7-Datenbank definitiv als String im Format DD.MM.YYYY eingespeichert.
:roll:
Es gibt vermutlich irgendeine Funktion, um das umzuwandeln, damit Datums-Vergleiche möglich sind, aber der Fehler ist schon im Ansatz drin.

Aber probiere es mal mit:

SQL-Anweisung
1:
2:
3:
SELECT * 
FROM tabelle
WHERE DeinDatum <= CAST(DatenbankDatum AS DATE)


Vielleicht musst du noch ein bisschen basteln.