【问题标题】:match timestamp with date in MYSQL using PHP使用PHP在MYSQL中将时间戳与日期匹配
【发布时间】:2014-02-13 14:41:06
【问题描述】:

我有一张桌子

id user     Visitor timestamp
13 username abc     2014-01-16 15:01:44

我必须按日期(不是时间戳)“统计”过去 7 天“用户”的总访问者数

SELECT count(*) from tableA WHERE user=username GROUPBY __How to do it__ LIMIT for last seven day from today.

如果哪一天没有访客来,则不会出现任何行,因此应显示 0。

什么是正确的QUERY?

【问题讨论】:

    标签: mysql sql date select group-by


    【解决方案1】:

    不需要GROUP BY结果集,需要统计一周的访问量(未指定用户)。试试这个:

    SELECT
        COUNT(*)
    FROM
        `table`
    WHERE
        `timestamp` >= (NOW() - INTERVAL 7 DAY);
    

    如果您需要跟踪指定用户的访问,请尝试以下操作:

    SELECT
        DATE(`timestamp`) as `date`,
        COUNT(*) as `count`
    FROM
        `table`
    WHERE
        (`timestamp` >= (NOW() - INTERVAL 7 DAY))
        AND
        (`user` = 'username')
    GROUP BY
        `date`;
    

    MySQL DATE() function reference.

    【讨论】:

    • 用户想要统计每天的访问次数
    • @AlirezaFallah 是的,注意到了。谢谢。
    • 仍然不是每天分开,спасибо :)
    • @AlirezaFallah 再次修复。 Незачто (:
    • @HAL9000 - 我需要一周中每一天的访客人数,例如- 1 月 1 日 - 300 日,2 月 -398 日,接下来的 7 天,带有时间戳的 GROUPBY 无法解决问题,我需要按日期分组
    【解决方案2】:

    试试这个:

    SELECT DATE(a.timestamp), COUNT(*) 
    FROM tableA a 
    WHERE a.user='username' AND DATEDIFF(NOW(), DATE(a.timestamp)) <= 7
    GROUP BY DATE(a.timestamp);
    

    【讨论】:

    • 工作得很好,谢谢,有什么办法可以使表中不存在的日期的 COUNT=0
    • 你构造 WHERE 条件的方式会扼杀索引的使用。相反,使用a.timestamp clear: DATE_SUB(NOW(), INTERVAL 7 DAY) >= a.timestamp
    【解决方案3】:

    我认为这是工作:)

    SELECT Count(*) 
    from table A 
    WHERE user = username AND DATEDIFF(NOW(),timestamp)<=7
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2021-10-31
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多