【问题标题】:Show hourly clicks of a mysqli query for one day显示一天 mysqli 查询的每小时点击次数
【发布时间】:2013-08-26 19:50:09
【问题描述】:

我有下表:

CREATE TABLE `visitors_table` (
`ID` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`visitor_ip` VARCHAR(32) NULL,
`visitor_browser` VARCHAR(255) NULL,
`visitor_hour` SMALLINT(2) NOT NULL DEFAULT '00',
`visitor_minute` SMALLINT(2) NOT NULL DEFAULT '00',
`visitor_date` DATE NOT NULL,
`visitor_day` SMALLINT(2) NOT NULL,
`visitor_month` SMALLINT(2) NOT NULL,
`visitor_year` SMALLINT(4) NOT NULL,
`visitor_page` VARCHAR(255) NULL
);

以下查询每天获取访问者:

"SELECT visitor_date FROM visitors_table WHERE visitor_date = CURDATE()";

现在我想每小时输出一次数据。看这个例子:

Day     Year Hours     Clicks
July 4, 2011 00:00:00  4
July 4, 2011 01:00:00  12 
July 4, 2011 02:00:00  75
July 4, 2011 03:00:00  27

等等……

有人可以帮我吗?一天的访问者总数的输出我不清楚!

下面的查询只有这个结果:

SELECT visitor_date, count(*) FROM visitors_table WHERE visitor_date = CURDATE() GROUP BY visitor_hour

visitor_date count(*) 
2013-08-31   4
2013-08-31   7

我需要像上面写的那样按小时得到结果! 我的错误在哪里,或者我如何用 php 显示它?

【问题讨论】:

  • 除了整理查询和数据库表之外,您是否尝试过其他任何方法?
  • 您是否只需要扩展您已经拥有的日期,以搜索小时是什么(即获取现在是什么小时以及该小时内显示的任何内容?)
  • 为什么要将所有这些时间值存储为单独的字段?使用单个日期时间字段会更有效。它还将大大简化您的查询:WHERE DAY(datetimefield)='2013-08-23' GROUP BY HOUR(datetimefield)

标签: php mysql sql date mysqli


【解决方案1】:

SELECT visitor_date, count(*) FROM visitors_table WHERE visitor_date = CURDATE() group by visitor_hour

【讨论】: