过去24小时内列出访问量

时间:2009-07-11 18:37:36

标签: sql sql-server-2005 asp-classic

我想列出过去24小时内每小时的最后一次访问次数。我认为以下代码会这样做,但我得到了下面的结果。知道我搞砸了吗?

[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[, 0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[, 0],[,0],[,0],[,0],[,0],

Dim ListHours()
HoursInCurrentDay = "24"
Redim ListHours(HoursInCurrentDay)
For Days = 0 To 23
    ListHours(Hours) = Hours
Next
SQLARR2 = ListHours
For x = 1 to ubound(SQLARR2)
    SQL = "SELECT COUNT(DISTINCT VISITORIP) AS TOTALVISITS"
    SQL = SQL & " FROM STATS"
    SQL = SQL & " WHERE DATEPART(hh, GETDATE()) = '"& SQLARR2(x) &"' AND DATEENTERED BETWEEN CONVERT(VARCHAR(10), GETDATE()-1, 101) AND CONVERT(VARCHAR(10), GETDATE(), 101)"
    Set objVisits = objConn.Execute(SQL)    

    If objVisits.EOF Then
    Else 

    List = List + "[" & SQLARR2(x) & "," & objVisits("TOTALVISITS") & "],"

    End If
Next

Response.Write List

2 个答案:

答案 0 :(得分:1)

查看提供的结果,我注意到SQLARR2(x)没有生成值。所有结果出现[,0],其中第一个(缺失)元素是小时,第二个元素是计数。我认为ListHours值没有被正确定义,因为Hours变量没有赋值(不管怎样都不在代码片段中。)

如果你改变了

For Days = 0 To 23        
   ListHours(Hours) = Hours
Next

For Days = 0 To 23        
   ListHours(Days) = Days
Next

应将正确的小时数添加到您的列表中。这也应该修复查询(和查询结果),因为SQLARR2(x)也用于构建动态sql。

我希望它有所帮助。

答案 1 :(得分:0)

你不能只使用一个简单的查询:

SELECT * FROM VISITS WHERE (VISIT.TIME > now - 24hours AND VISIT.TIME < now)