我需要做一个报告。该报告跟踪用户点击终端的时间,这些点击被存储在数据库中的两个表格上。我需要找到一个优雅的解决方案来循环使用日期范围,并为每天的每个小时执行一次报告。从24小时制的每小时日期范围中选择日期
我坚持最好和最优雅的方式来循环播放几小时(即使没有记录那个小时的点击,报告将显示从00:00到23:00的小时)。
所以我的输出必须是(作为一个例子)
00:00 - 34 clicks
01:00 - 22 clicks
02:00 - 91 clicks
03:00 - 4 Clicks
...
...
23:00 - 17 Clicks
我想在PHP $ startHour = 00:00声明2个变量; $ endHour = $ startHour + 01:00;
并做一个循环递增$ startHour unitl它匹配结束小时,但我不知道是否可以像这样增加小时变量。
的日期的存储格式为:2012年11月22日9点17分29秒
这里是我的MySQL查询:
SELECT tbl_xboxstats.sessionend_date,
tbl_xboxstatsaux.XboxStatsId,
tbl_xboxstatsaux.ItemId,
tbl_xboxstats.UnitId,
tbl_xboxstats.UIId,
WEEK(tbl_xboxstats.sessionend_date) AS WeekNumber,
Count(tbl_xboxstatsaux.ItemId) AS Count
FROM tbl_xboxstats
INNER JOIN tbl_xboxstatsaux ON tbl_xboxstats.id = tbl_xboxstatsaux.XboxStatsId
WHERE tbl_xboxstats.sessionend_date
BETWEEN '2012-11-22 "' . $startHour . '"'
AND '2012-11-22"' . $endHour . '"'
GROUP BY tbl_xboxstatsaux.XboxStatsId
LIMIT 0 , 30
我认为最安全的方式,可能是你的起始日期转换为时间戳,加上3600到它(1小时),然后再改它变成日期格式。 – monkeymatrix
Yout表结构/模式是什么? – shadyyx
@monkeymatrix这是一个可能的解决方案。也许你应该把它作为答案?在此期间,我会放弃它。 – user1882752