k - så er jeg lidt på herrens mark desværre, men jeg kunne forestille mig du kunne gøre noget lignende følgende:
for dag: SELECT COUNT(username) FROM <<tableName>> WHERE dateoflogin BETWEEN NOW()-1 AND NOW()
for uge SELECT COUNT(username) FROM <<tableName>> WHERE dateoflogin BETWEEN NOW()-7 AND NOW()
Se om det virker på en Access database. Det virker på en MS SQL 2000 og så vidt jeg husker minder syntaksen på de to meget om hinanden - hvis ikke det virker finder vi en anden løsning :D
Son normal udskrivning fra recordset :-) jeg lavede en fejl kan jeg se, for egentlig burde det være SELECT COUNT(username) AS totalNum FROM <<tableName>> WHERE dateoflogin BETWEEN NOW()-1 AND NOW() for at have noget at udskrive.
nedenstående burde kunne gøre tricket: var rs = new ActiveXObject("ADODB.Recordset"); rs = cn.Execute("SELECT COUNT(username) AS totalNum FROM <<tableName>> WHERE dateoflogin BETWEEN NOW()-1 AND NOW()"); Response.Write(Number(rs("totalNum").value))
i princippet kan du nøjes med Response.Write(rs("totalNum")) men for at være helt korrekt og alt det der bør du benytte den rette type
Den skriver bare et 0 ud, min kode ser nu sådan ud (har fjernet activex):
rs = Conn.Execute("SELECT COUNT(username) AS totalNum FROM userlog WHERE dateoflogin BETWEEN NOW()-1 AND NOW()"); Response.Write(Number(rs("totalNum").value))
rs = Conn.Execute("SELECT COUNT(username) AS totalNum, NOW()-1 AS test1, NOW() AS test2 FROM userlog WHERE dateoflogin BETWEEN NOW()-1 AND NOW()"); Response.Write(Number(rs("test1").value) + " " + String(rs("totalNum").value) + " " + Number(rs("test2").value))
Derudover skal du udskrive servertiden
På den måde kan du se hvilke datoer det er den checker på... Det der kan være et issue er hvis der benyttes to forskellige tidsformater. Et på serveren og en på databasen
kan du se at der reelt er 24 timer imellem de to tidspunkter den prøver at finde. Næste skridt er så at omregne til hvad de to tidspunkter er. Det kan du gøre på følgende måde:
var dateTest1 = new Date(1086854261000) Response.Write(dateTest1.toLocaleString() + "<br>"); var dateTest2 = new Date(1086940661000) Response.Write(dateTest2.toLocaleString() + "<br>");
Her kan du så se at de to tidspunkter er henholdsvis 10. juni 2004 09:57:41 og 11. juni 2004 09:57:41 lokal tid. Er der nogen logins i det tidsrum? Derudover vil jeg stadig råde dig til at finde ud af hvilket tidsformat henholdsvis databasen og serveren benytter...
forresten kan du i Access prøve at søge på BETWEEN og se om den funktion findes - hvis ikke behøver vi ikke gå længere ud af dette spor, men finde en anden vej at gå...
Jeg må lige checke vores webadmin omkring tid på serveren.?? (men jeg bruger Date(), som skriver dette i db Fri Jun 11 11:20:39 2004) Mht til tid på databasen den kan jeg vel selv finde? eller skal webadmin også svare på den.
Hvad er test1 og test2 ? Den kode du har givet mig er den for en dag eller uge?
Tusind tak for din hjælp så langt. Det er virkeligt fedt....
Tid på serveren kan du i princippet selv finde ved at skrive var theDate = new Date(); Response.Write(theDate.toString());
Det kunne tyde på at du skriver dato med engelsk tidsformat. Du kan evt benytte toLocaleString() til at definere at det skal være lokalt tidsformat der skal benyttes. Tiden i databasen kan du selv se hvis du har en lokal kopi af databasen - hvis ikke findes der så vidt jeg ved en metode til at finde tidszonen, men jeg kan ikke huske den, så du skal nok have fat i din webadm.
test1 og test2 har du ikke længere noget at bruge til, men test1 er "i går" og test2 er "i dag"
KOden du har fået er sådan set for begge. I mit andet indlæg står der to koder - en med NOW()-1, og det er for en dag. Den med NOW()-7 er for en uge :-)
Glad for at det var noget du kunne bruge til noget :-)
Det er de rigitge scripts du bruger til dag og uge. Den eneste grund jeg kan se til at der ikke skulle være nogen i din count er hvis datoformater er forskellige.
det _kan_ du gøre men jeg vi¨l fraråde dig at gøre det for du mister muligheden for simpelt at kunne generere dato objekter udfra din DB. NOget du måske kunne undersøge det var at benytte MySQL istedet, for med den er der gode muligheder for at arbejde med datoer ganske simpelt...
ok jeg takker for din hjælp....kan godt være at jeg opretter et spg igen når jeg får svar fra min webadmin om dato på serveren osv
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.