【问题标题】:List hits per hour from a MySQL table列出 MySQL 表中每小时的点击次数
【发布时间】:2010-04-20 23:14:57
【问题描述】:

我正在尝试从数据库中计算出每小时的点击次数。数据基本存储如下:

Table Name: Visitors
============================
VisitorIP          TIMESTAMP
----------------------------
15.215.65.65       123456789

我想显示每小时(过去 6 小时内)的总点击次数,包括没有点击的小时数。 输出示例:

// Assuming now : 21:00
21:00 - 0 hits
20:00 - 1 hits
19:00 - 4 hits
18:00 - 0 hits
17:00 - 2 hits
16:00 - 3 hits

我希望将数据作为数组获取,请注意存储的日期是 UNIX 时间戳格式。并且可能有几个小时没有任何点击!

谢谢

【问题讨论】:

  • 输出应该包括当前不完整的小时,还是应该从第一个完整的小时开始?
  • @Mark Yes 从当前不完整的小时开始。谢谢

标签: php mysql timestamp


【解决方案1】:
SELECT MONTH(timestamp),DAY(timestamp), HOUR(timestamp),count(*) 
 from visitors
  group by MONTH(timestamp), DAY(timestamp), HOUR(timestamp)

在 php 中,您需要考虑因丢失时间而导致的数据中的任何漏洞。

【讨论】:

    【解决方案2】:

    您可以使用简单的关键字 BETWEEN。您可以描述日期时间在您要选择的值之间(范围 3600 秒)。

    SELECT * FROM VISITORS WHERE TIMESTAMP BETWEEN UNIX_TIMESTAMP()-3600*1 AND UNIX_TIMESTAMP()-3600*0;
    SELECT * FROM VISITORS WHERE TIMESTAMP BETWEEN UNIX_TIMESTAMP()-3600*2 AND UNIX_TIMESTAMP()-3600*1;
    SELECT * FROM VISITORS WHERE TIMESTAMP BETWEEN UNIX_TIMESTAMP()-3600*3 AND UNIX_TIMESTAMP()-3600*2;
    SELECT * FROM VISITORS WHERE TIMESTAMP BETWEEN UNIX_TIMESTAMP()-3600*4 AND UNIX_TIMESTAMP()-3600*3;
    SELECT * FROM VISITORS WHERE TIMESTAMP BETWEEN UNIX_TIMESTAMP()-3600*5 AND UNIX_TIMESTAMP()-3600*4;
    SELECT * FROM VISITORS WHERE TIMESTAMP BETWEEN UNIX_TIMESTAMP()-3600*6 AND UNIX_TIMESTAMP()-3600*5;
    

    【讨论】:

    • 您的解决方案在技术上是可行的,但如果 Axel 的老板决定报告现在应该包括过去 72 小时,该怎么办?
    • 然后只使用第一行并将 3600 更改为 72*60*60
    【解决方案3】:

    只是简化了上面的答案,

    for($i=1;$i<=6;$i++){
      $s -= $i;    
      $query[$i] = "SELECT * FROM VISITORS WHERE TIMESTAMP BETWEEN UNIX_TIMESTAMP()-3600*$i AND UNIX_TIMESTAMP()-3600*$s";
    }
    
    $i = 1;
    foreach($query as $value){
      $result[$i] = mysql_fetch_row($query[$i]);
      $i++;
    }
    

    只是我的简单想法。随意使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2022-01-15
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多