27. oktober 2005 - 14:49Der er
6 kommentarer og 2 løsninger
SQL søgning på dato
Hvordan søger man på en dato med SQL i delphi? Jeg har prøvet SQL.Add('SELECT * FROM Medlemmer WHERE fdag=''' + StrToDate(Edit1.text) + '''; Edit1.text har syntax eks. 10-03-1991 fdag er af feldt typen date/time..
Dit eksempel burde virke. Prøv evt. at sætte flere ' på ! Ellers er den bedste måde at selecte en dato på at gemme dato´en som et tal i databasen. Så kan man lave sine sql-sætninger på denne måde: sqltekst:='Select * from medlemmer where fdag = '+inttostr(DatoTal);
Når man gemmer i databasen laver man dato´en om til et tal på denne måde: BrugerDato:='27-10-2005'; DatoTilTal:=StrToDate(BrugerDato); DatoTal:=round(int(DatoTilTal));
Brugerdato er en string; DatoTilTal er en TDate; DatoTal er en integer;
Da er det også meget nemmere at skifte databasen ud idet man slipper for at tænke på de forskellige datotyper databaserne kører med. Et tal er et tal i alle databaser så det virker altid
At angive en dato som en string er en ekstrem dårlig ide, man ved aldrig om databasen forstår det. Den rigige måde er at bruge parametre. Fra hukommelsen: SQL.Add('SELECT * FROM Medlemmer WHERE fdag= :Dato'; SQL.ParamByName('Dato').AsDateTime := EncodeDate(2005,10,27); Nu vil Delphi sørge for at håndtere datoen korrekt, uanset hvad datoformat maskinen (og ev database server) kører med.
hmmm... joeh... nu er det sådan at jeg skal kunne søge på en del af datoen kun, altså, hvis jeg vil have alle der er født i den 10'ende måned... hvordan skal jeg så gøre?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.