Autor Beitrag
Jacer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105

Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
BeitragVerfasst: Mi 28.10.09 13:24 
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?

_________________
A look in the eyes often says more than a hundred words could ever express.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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.:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105

Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
BeitragVerfasst: 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.

_________________
A look in the eyes often says more than a hundred words could ever express.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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:
ausblenden SQL-Anweisung
1:
2:
3:
SELECT * 
FROM tabelle
WHERE DeinDatum <= CAST(DatenbankDatum AS DATE)


Vielleicht musst du noch ein bisschen basteln.