Entwickler-Ecke

Datenbanken - Suche per SQL nach einer Uhrzeit (von vielen)


sms-ag - Mo 14.10.02 18:04
Titel: Suche per SQL nach einer Uhrzeit (von vielen)
Vielleicht ist das für euch nicht so kompliziert :-)

ich möchte aus einer Datenbank die hunderte von Zeitwerten beinhaltet per sql den am nächsten passenden Zeitwert finden.
LIKE funktioniert leider nicht.

SQL.Add('SELECT* FROM Test WHERE (Uhrzeit LIKE "'+zeit1.Text+'")ORDER BY Uhrzeit');

Zeit1 ist ein Edit-Feld und kann beliebig geändert werden. Dabei kann es auch oft vorkommen, dass die Zeit die im Edit-Feld eingegeben wird tatsächlich in der Datenbank nicht existiert. In diesem Fall soll die nächste höhere Zeit gefunden werden.

Danke für jede Hilfe


LCS - Di 15.10.02 06:19

Hi
hängt davon ab, wie die die Zeitinformationen in der Datenbank speicherst. Wenn du ein Time Feld verwendest sollte das eigentlich funktionieren:

Quelltext
1:
SQL.Text := 'SELECT * from Test where Uhrzeit >= ' + QuotedStr(Zeit1.Text);                    


Wenn du die Zeit in einem String Feld speicherst funktionierts eigentlich genauso, aber du musst darauf achten, dass du die Uhrzeit immer mit der gleichen Anzahl Stellen beschreibst. Also 07:30 statt 7:30.

Gruss Lothar


sms-ag - Di 15.10.02 11:41
Titel: Habe das eigentliche Problem gefunden...
Danke erst mal...
Die Zeitwerte werden als Time in der DB gespeichert.

So funktioniert es nun endlich:

Quelltext
1:
2:
3:
4:
Active:=False;
SQL.Clear;
SQL.Add('SELECT* from backtestZZ where Uhrzeit >= "'+TimeToStr(zeit1.Time)+'"');
Active:=True;

Der eigentliche Fehler war, dass eine Komponente die Zeitwerte falsch übergeben hatte: bei "08:00:00" z.B. kam "8 . ." raus. Ich habe diese nun durch die von Delphi (DateTimePicker) ersetzt und jetzt werden die Werte auch korrekt übergeben.