Veröffentlicht 8. Dezember 200618 j Hallo Ich habe folgendes Probelm: Ich habe eine Tabelle (nennen wir sie mal b) Sie beinhaltet Datumwerte wie z.B. 2006-12-07 12:33:27 2006-11-09 13:14:24 Nun will ich in meiner abfrage alle einträge mit dem Datum vom vortag. Habe das ganze gelöst in dem ich folgenden WHERE Clause benutz habe: WHERE substring(b.datum from 1 for 10) = '2006-12-07' Doch durch den Substring dauert die Abfrage sehr lange... Nun Wollte ich mal fragen ob ich den WHERE Clause nich auch irgendwie so formulieren kann: WHERE b.datum like '2006-12-07%' Doch ich bekomme bei WinSQL immer nur die Meldung: Wildcard matching may not be used with non-character types. (State:S1000, Native Code: FFFFFF25) Kann mir jemand helfen, wie ich den Clause so formuliere kann , so dass das ganze schneller geht als mit SUBSTRING? Mfg Max
8. Dezember 200618 j Hallo Ich habe folgendes Probelm: Du hast nicht angegeben auf welchem Datenbanksystem du arbeitest. Goos
8. Dezember 200618 j mit dem Informix ODBC Driver den datenbank typ, kann ich leider niergendwo finden... is ne verbindung über DSN
8. Dezember 200618 j Ok, Informix is nicht meine Welt, aber prinzipiell solltest bei einem Datum nicht auf einen String vergleichen wenn sichs vermeiden laesst. Solltest eher auf Datum vergleichen,also where datum >= 2006-11-07 00:00:00 and datum < 2006-11-08 00:00:00 Goos
8. Dezember 200618 j ja wenns so einfach wäre *g* sorry hät ich glaub vorhin erwähnen sollen *g* Die SQL Abfrage wird von einem VB Programm ausgeführt, wo das Datum dann eine Variable ist *g* also ich führe sozusagen das programm jeden morgen aus um zu sehen was gestern passiert ist
8. Dezember 200618 j Na gerade dann is das doch ueberhaupt kein Problem. Du kannst doch im VB beim erzeugen deines SQL Strings die Datumsvariablen entsprechend in den String setzen. Goos
8. Dezember 200618 j Nun will ich in meiner abfrage alle einträge mit dem Datum vom vortag. SELECT * From b WHERE datum = CURRENT_DATE()-1 Wobei CURRENT_DATE vielleicht durch eine Funktion deines DBMS ersetzt werden muss. EDIT: Kein DBMS speichert ein Datum tatsächlich als String! Du könntest für ein beliebiges Datum (1.Jan 2006 z.B.)auch SELECT * From b WHERE datum = '2006-01-01' nehmen. Egal ob das ein Datetime-Feld ist. EDIT2: OT Deine Sig: Wenn für Amokläufe Killerspiele verantwortlich gemacht werden, mach ich Pornos für Vergewaltigungen verantwortlich! Das tun manche ja auch (u.A.), nicht nur du
8. Dezember 200618 j jo danke... hatte nen denkfehler... funktioniert so wie du gesagt hast goos... Danke an euch
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.