代码之家  ›  专栏  ›  技术社区  ›  Brian Lacy

mysql:查询获取每周日志条目数-包括空集

  •  1
  • Brian Lacy  · 技术社区  · 14 年前

    我的Web应用程序有一个报告,显示特定用户每周登录的次数。然而,我正在努力使这个问题正确。我遇到的问题是,我似乎无法获得用户所做的几周时间。 完全登录。

    当前我的查询如下:

    SELECT
        DATE_ADD(logDate, INTERVAL(1-DAYOFWEEK(logDate)) DAY) weekStart,
        DATE_ADD(logDate, INTERVAL(7-DAYOFWEEK(logDate)) DAY) weekEnd,
        COUNT(*) loginCount
    FROM log
    WHERE
        logDate > $startDate AND
        logDate < $endDate
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   Bill Karwin    14 年前

    我将为周数创建一个表:

    CREATE TEMPORARY TABLE weeks (weeknum INT PRIMARY KEY);
    

    然后用整数值0..53填充该表。

    然后使用 WEEK() 功能:

    SELECT weeks.weeknum, COUNT(*) loginCount
    FROM weeks LEFT OUTER JOIN log ON weeks.weeknum = WEEK(log.logDate)
    WHERE log.logDate BETWEEN ? AND ?
    GROUP BY weeks.weeknum;
    

    如果需要此查询支持跨越多年的日期范围,请使用 YEARWEEK() 相反,在临时表中填充更多的YYYYWW格式的行,如返回的值 周刊() .