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
Jacer hat folgendes geschrieben : |
| 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!