select top 1 * from tablec where datez >='dateadd(day,-1,getdate())' and datez <='getdate()' order by dianj desc

解决方案 »

  1.   

    我这几天在做一个东西也需要一个周点击排行,我现在正在做
    是这样做的,加了几个字段,(最后点击时间戳,年月日周的点击次数5个字段和总点击次数)
    同时实现了记录年月日周的点击数.有了点击数统计就很好统计了呵,当天的点击查日点击次数就好了
    大概的代码这样的.呵呵,也不知道逻辑上有没有错误..因为还没有加到做的系统里面去.
    $oldTimeStamp = mktime(0,0,0,1,16,2005); //这个从数据库里取出来,这里模拟的
    //从数据库里初始化
    $hits = 10;
    $yhits = 10;
    $mhits = 10;
    $dhits = 10;
    $whits = 10;$nowDateArray = getdate();
    $oldDateArray = getdate($oldTimeStamp);
    //year process
    if($nowDateArray["year"] == $oldDateArray["year"])
    $yhits ++;
    else
    $yhits = 1;//month process
    if($nowDateArray["year"] == $oldDateArray["year"] && $nowDateArray["mon"] == $oldDateArray["mon"])
    $mhits ++;
    else
    $mhits = 1;//day process
    if($nowDateArray["year"] == $oldDateArray["year"] && $nowDateArray["mon"] == $oldDateArray["mon"] && $nowDateArray["mday"] == $oldDateArray["mday"])
    $dhits ++;
    else
    $dhits = 1;//week process
    //取得本周的开始结束时间段//本周开始时间,从今天开始后退n天到星期天的0点,一个周从星期天开始.如果从星期一开始把0,0,0改为23,59,59
    $tmpStartDate = mktime(0,0,0,$nowDateArray["mon"],$nowDateArray["mday"],$nowDateArray["year"]) - ($nowDateArray["wday"] * 86400);//本周结束时间,本周六12点59
    $tmpEndDate = mktime(23,59,59,$nowDateArray["mon"],$nowDateArray["mday"],$nowDateArray["year"]) + ((6 - $nowDateArray["wday"]) * 86400);
    //如果上次更新在这个时间段内,为同一周
    if($oldTimeStamp >= $tmpStartDate && $oldTimeStamp <= $tmpEndDate)
    $whits ++;
    else
    $whits = 1;//接下来更新最后记录时间数据库
    $hits ++;//总点击数加1
    $sql = "UPDATE TABLE SET HITS=".$hits.", YHITS=".$yhits.",MHITS=".$mhits.",DHITS=".$dhits.",WHITS=".$whits.",LASTTIMESTAMP=".$nowDateArray[0]." WHERE OID=".$id;