Avatar billede razmataz Nybegynder
27. oktober 2005 - 14:49 Der 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..

Nogle forslag?
Avatar billede kroning Nybegynder
27. oktober 2005 - 14:53 #1
Ny skriver du ikke hvilken database men i f.eks. MySQL er formatet yyyymmdd
Avatar billede kroning Nybegynder
27. oktober 2005 - 14:56 #2
Du skrev date/time, i MySQL skal det så være YYYYMMDDHHMMSS
Avatar billede kroning Nybegynder
27. oktober 2005 - 14:59 #3
Kikkede lige i æ manual, ser ud til at man også kan bruge 'YYYY-MM-DD HH:MM:SS'
Avatar billede razmataz Nybegynder
27. oktober 2005 - 15:04 #4
Det er en simpel MSaccess dbase
Kan man ikke definere hvilken syntax den skal konvertere datoen i?
Avatar billede kroning Nybegynder
27. oktober 2005 - 15:06 #5
Ved ikke, har aldrig brugt MSaccess
Avatar billede pigbear Nybegynder
27. oktober 2005 - 16:23 #6
Hej

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

Mvh

Pigbear
Avatar billede tolderlund Nybegynder
28. oktober 2005 - 08:42 #7
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.
Avatar billede razmataz Nybegynder
07. november 2005 - 19:02 #8
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?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester