Php MySQL获取所有日期的网站统计信息

Php MySQL获取所有日期的网站统计信息,php,mysql,vb.net,datetime,statistics,Php,Mysql,Vb.net,Datetime,Statistics,每次新访问者访问我的站点时,他们都会登录到数据库中。通过使用此查询,我能够选择过去七天内特定日期的用户数: SELECT COUNT(*) AS Hits, DATE_FORMAT(Date, '%Y-%m-%d') AS HitDay FROM(stats) WHERE Date >= DATE_SUB(SYSDATE(), INTERVAL 7 DAY) GROUP BY DATE(Date) ORDER BY Date ASC 问题是,作为项目的一部分,我必须将这些数据绘制在

每次新访问者访问我的站点时,他们都会登录到数据库中。通过使用此查询,我能够选择过去七天内特定日期的用户数:

SELECT COUNT(*) AS Hits, DATE_FORMAT(Date, '%Y-%m-%d') AS HitDay FROM(stats) WHERE Date >= DATE_SUB(SYSDATE(), INTERVAL 7 DAY) GROUP BY DATE(Date) ORDER BY Date ASC   
问题是,作为项目的一部分,我必须将这些数据绘制在VB中的图表中,如果在某个特定日期没有命中,那么图表上的两个日期之间就存在差距。我想知道,如果没有访客,是否可以返回过去七个日期内的所有日期,点击栏上的日期为0。间隔也可以更改,因此它的范围可以是1到31


也许这可以通过一个过程或函数来完成?任何想法都会很好,但我尽量不填补VB中的空白

您可以生成7天,然后使用下面的统计信息加入它

SELECT COUNT(stats.date) AS Hits, DATE_FORMAT(days.Date, '%Y-%m-%d') AS HitDay 
FROM
   (SELECT CURDATE() as date
    UNION SELECT CURDATE() - INTERVAL 1 DAY
    UNION SELECT CURDATE() - INTERVAL 2 DAY
    UNION SELECT CURDATE() - INTERVAL 3 DAY
    UNION SELECT CURDATE() - INTERVAL 4 DAY
    UNION SELECT CURDATE() - INTERVAL 5 DAY
    UNION SELECT CURDATE() - INTERVAL 6 DAY
    )days
LEFT JOIN stats ON days.date = stats.date
GROUP BY DATE(days.Date) ORDER BY days.Date ASC
如果您的时间间隔发生变化,可以指定以下128天,只需将<7的条件更改为您的时间间隔

SELECT COUNT(stats.date) AS Hits, DATE_FORMAT(days.Date, '%Y-%m-%d') AS HitDay 
FROM
   (SELECT CURDATE() - INTERVAL 
     (d1.value+d2.value+d3.value+d4.value+
      d5.value+d6.value+d7.value) day as date
    FROM (SELECT 0 as value UNION SELECT 1)d1,
         (SELECT 0 as value UNION SELECT 2)d2,
         (SELECT 0 as value UNION SELECT 4)d3,
         (SELECT 0 as value UNION SELECT 8)d4,
         (SELECT 0 as value UNION SELECT 16)d5,
         (SELECT 0 as value UNION SELECT 32)d6,
         (SELECT 0 as value UNION SELECT 64)d7
    WHERE (d1.value+d2.value+d3.value+d4.value+
      d5.value+d6.value+d7.value) < 7
    )days
LEFT JOIN stats ON days.date = DATE(stats.date)
GROUP BY DATE(days.Date) ORDER BY days.Date ASC

有没有可能创建一个循环,因为间隔可能会改变这对我不起作用,当我的原始代码返回3或6时,它会在点击列中返回0,因为您的日期有一个时间值,所以连接可能不起作用。date=DATEstats.date我刚刚更新了我的答案,以包含一个指定更多天的版本,您可以更改间隔<7。请检查它。谢谢!最后一个问题是,我需要包含NewUser='True'的代码,但我的业余技能并不适合这样做