25. november 2003 - 08:21Der er
5 kommentarer og 1 løsning
Lille datoproblem
Hejsa
Jeg håber der er nogen der kan hjælpe med dette lille datoproblem. Jeg skal lave en bannerstatistik, hvor jeg har gemt datoerne som datetime det vil sige at de f.eks. vil hedde "19-11-2003 10:00"
Mit problem er at jeg skal have trukket hver dag ud og så lave en count på hvor mange poster der er på den givne dag. Umiddelbart ingen problem, men jeg kan ikke finde ud af at få den til at nøjes med at kigge på datoen, den kigger også på klokken...
Min kode ser ud som følgende:
<table width="400" border="1" cellpadding="2" cellspacing="0"> <tr> <td><b>Dato</b></td> <td><b>Visninger</b></td> </tr> <% sql = "" sql = sql & "SELECT DISTINCT DATEPART(dd, viewedDate) AS dDay, DATEPART(mm, viewedDate) AS dMonth, DATEPART(yyyy, viewedDate) AS dYear, " sql = sql & "(SELECT COUNT(*) FROM tm_banner_views WHERE viewedDate= bv.viewedDate) AS cnt " sql = sql & "FROM dbo.tm_banner_views bv " sql = sql & "ORDER BY DATEPART(yyyy, viewedDate), DATEPART(mm, viewedDate), DATEPART(dd, viewedDate) " Set rsDates = dbCon.Execute(sql)
Hvor får du dine to datoer fra i din wheredel ? Hvis du bruger den indbyggede sql-funktion datediff med dd som første argument vil den teste år, måned og dag for dig: where datediff(dd,dato1,getdate()) = 0 - her er dato1 eks. dit datetimefelt og getdate er endnu en indbygget sql-funktion der henter dags dato til dig.
Jamen i den anden sql får jeg jo datoen fra den første... Jeg har ikke brugt datediff før så det er da meget muligt at det er den jeg skal bruge
Men jeg har jo ikke noget at bruge getDate() til i dette tilfælde, da jeg ønsker at trække alle forskellige datoer ud fra min tabel, hvor jeg så kan se hvor mange visninger der har været pr. dag.
Det vil sige at resultatet gerne skulle blive noget i retningen af:
Etc. etc. Så min sql skulle gerne minde lidt om følgende:
SELECT DISTINCT(bv.viewedDate) myDate, (SELECT COUNT(*) FROM banner_views WHERE viewedDate=bv.viewedDate) AS cnt FROM banner_views bv ORDER BY bv.viewedDate
Godt nok - så vidt jeg er orienteret er det ikke datediff() der giver problemer rent performancemæssigt - de indbyggede funktioner skulle være ret hurtige..
Har du noget index på dine tabeller, ikke fordi jeg ved specielt meget om indexering af tabeller ( hvordan ) men jeg vi tro en indexering af de datoer du spørger på vil kunne hjælpe lidt på performance. Du kan prøve at hjjreklikke på din tabel i Enterproce Manager der skulle så være noget der hedder "manage indexes" eller noget i den retning.
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.