Avatar billede pfp Nybegynder
25. november 2002 - 19:44 Der er 7 kommentarer og
1 løsning

Dato udvælgelse i SQL

Hej,

Jeg vil gerne vælge poster ud mellem 2 af brugeren specificerede datoer.

Jeg har forsøgt med:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../Databaser/Statistik.mdb")
Conn.Open DSN

Dim Startdato, Slutdato
Startdato = Request.Form("Start")
Slutdato =  Request.Form("Slut")

SQL = "SELECT COUNT(HITID) AS Antal FROM Statistik WHERE Day(Dato) BETWEEN #" & Startdato & "# AND #" & Slutdato & "#"
Set rs = Conn.Execute(SQL)

Response.Write "I perioden " & Startdato & " til " & Slutdato & " har der været " & rs("Antal") & " besøgende." & "<br><br>"
Response.Write "SQL: " & SQL
%>

Men jeg får at der har været 0 besøgende, og det stemmer ikke overens med det der er i databasen.

Jeg har prøvet både med mine dato-værdier som værende f.eks. 25-11 og 25-11-2002, da jeg ikke helt var sikker på hvad den sammenlignede med ved brug af Day(Dato) i SQL.

Håber der er en der kan hjælpe.

/peter
Avatar billede eagleeye Praktikant
25. november 2002 - 20:20 #1
hvad indeholder:

Startdato = Request.Form("Start")
Slutdato =  Request.Form("Slut")

er det et tal eller en dato??
Avatar billede pfp Nybegynder
25. november 2002 - 21:45 #2
De indeholder det man taster ind i felterne. Så den opfatter den nok bare som en tekststreng. Jeg har f.eks. forsøgt med disse to indholdsformater: 25-11 og 25-11-2002 som slut og 13-11 eller 13-11-2002 som start, hvilket giver mig 0 selvom jeg ved det ikke passer. Kolonnen Dato i databasen er typen Dato og klokkeslet og indeholder en Now() værdi fra det tidspunkt hvor posten blev oprettet.
Avatar billede eagleeye Praktikant
25. november 2002 - 21:55 #3
med denne Day(dato) giver kun dagen (eks idag 25) ud fra en dato (25-11-2002)

Så SQL'en skal være noget med:

SQL = "SELECT COUNT(HITID) AS Antal FROM Statistik WHERE Dato BETWEEN #" & Startdato & "# AND #" & Slutdato & "#"


Men dato skal overføres som mm-dd-yyyy eller yyyy-mm-dd via SQL, altså US format. Også selvom det er dansk dato i databasen.
Avatar billede pfp Nybegynder
25. november 2002 - 21:59 #4
Okay, jeg skal altså ikke ændre på at det står som dd-mm-åååå i databasen? Hvordan løser jeg det? Ved at ændre LCID umiddelbart før min SQL?
Avatar billede eagleeye Praktikant
25. november 2002 - 22:02 #5
Nej man er nød til at formatere Startdato  og  Slutdato  lige inden SQL sæningen:

Startdato = Year(Startdato) & "-" & Month(Startdato) & "-" & Day(Startdato)
Startdato = Year(Slutdato) & "-" & Month(Slutdato) & "-" & Day(Slutdato)

SQL = "SELECT COUNT(HITID) AS Antal FROM Statistik WHERE Dato BETWEEN #" & Startdato & "# AND #" & Slutdato & "#"
Avatar billede riishoj Nybegynder
25. november 2002 - 22:06 #6
eagleeye>Undskyld at jeg blander mig her, men gider du kigge forbi
http://www.eksperten.dk/spm/287741
hvis du får tid. På forhånd tak.
riishoj
Avatar billede pfp Nybegynder
25. november 2002 - 22:07 #7
eagle -> Det virker...tak for det...smid et svar :-)
Avatar billede eagleeye Praktikant
25. november 2002 - 22:08 #8
Ok :)
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