25. maj 2005 - 15:03Der er
5 kommentarer og 1 løsning
Sammenligning af datoer i SQL
Jeg skal have udtrukket de fem seneste og de fem kommende arrangementer fra en access-db. Problemet består i hvordan jeg sammenligner dato'er i min forespørgsel.
Jeg havde forestillet mig noget i denne stil:
SELECT top 5* FROM match where dato1=<"&date&" order by id
Men kan ikke helt få det til at virke... Nogen forslag?
Hvis nu du bare vidste fra og til dato så kunne du bruge Between Select * From tabel Where dato Between fra And til Men hvis du ikke kender datoen og ønsker fem på den ene side af dags dato og fem på den anden side..så er du nød til at bruge to sql statements og union dem sql1 = "Select top 5* From match Where dato1 <= #" &date& "# Order By dato1 Desc" sql2 = "Select top 5* From match Where dato1 > #" &date& "# Order By dato1 Asc" sql = sql1 &" Union "& sql2 conn.execute(sql)
Du skal bruge formatet "mm-dd-yyyy" til access, selv om du ser et andet format. Den kan dog godt finde ud af at læse 14-04-2004 rigtig, da den ved at der ikke er 14 måneder, men 10-04-2005 opfattes som den 4. okt. Brug derfor altid mm-dd-yyyy formatet i access, så er der ikke problemer.
Du kan bruge denne funktion til at konvertere datoer:
Function ConvertToSqlDate(dato) dim SQLYear,SQLMonth,SQLDay SQLYear = Year(dato) SQLMonth = Month(dato) SQLDay = Day(dato) if SQLDay<10 then SQLDay = 0&SQLDay end if if SQLMonth<10 then SQLMonth = 0&SQLMonth end if ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear End Function
Desuden skal der # omkring datoer i Access:
sql = "SELECT top 5* FROM match where dato1=< #"& ConvertToSqlDate(date) &"# order by id"
Umiddelbart lader det til at virke uden brug af convert funktionen, men jeg har endnu ikke gennemtestet det, så det er muligt at jeg kommer til at gøre brug af det alligevel.
Jeg havde ikke brug for union sætningen, da jeg kører de to forespørgsler seperat - altså på to forskellige sider. Den eneste lille ting var, at der skulle være et mellemrum mellem 5 og * heri "top 5*"
Men nu virker det så jeg ville sætte pris på oprettelsen af svar... ;-)
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.