我的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
我将为周数创建一个表:
CREATE TEMPORARY TABLE weeks (weeknum INT PRIMARY KEY);
然后用整数值0..53填充该表。
然后使用 WEEK() 功能:
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格式的行,如返回的值 周刊() .
YEARWEEK()
周刊()