我有一个看起来像这样的表:
ID t_stamp views uviews hits uhits
1 7/18/2012 19:00 105 11 0 0
5 7/18/2012 20:00 1 1 0 0
2 7/19/2012 9:00 118 4 0 0
1 7/19/2012 10:00 196 18 0 0
7 7/19/2012 11:00 2 1 0 0
2 7/19/2012 12:00 38 11 0 0
2 7/19/2012 13:00 20 5 0 0
2 7/19/2012 19:00 9 2 0 0
2 7/20/2012 15:00 85 6 0 0
1 7/20/2012 16:00 483 101 2 2
2 7/20/2012 17:00 1200 240 0 0
2 7/20/2012 18:00 1200 232 0 0
2 7/20/2012 19:00 1199 231 0 0
2 7/20/2012 20:00 1200 236 0 0
2 7/20/2012 21:00 1201 237 0 0
1 7/20/2012 22:00 1220 187 0 0
1 7/20/2012 23:00 869 165 0 0
我的方法是按天将它们组合起来,这样我就可以获得最后四列中的每一列的总和。ID 并不重要。
我正在使用这个:
SELECT `bannerID` , DATE_FORMAT( `t_stamp` , '%m/%d/%Y' ) AS `date` ,
SUM( `views` ) AS `views` , SUM( `uviews` ) AS `uviews` , SUM( `hits` ) AS `hits` , SUM( `uhits` ) AS `uhits`
FROM test_bannerstats
WHERE DATE( t_stamp ) >= DATE( '2012-07-01' )
AND DATE( t_stamp ) <= DATE( '2012-08-24' )
GROUP BY `date`
ORDER BY `date` ASC
然而,这对我来说似乎不正确,因为这些数字似乎相互矛盾。最后,我想每天统计最后四列。
编辑:
看起来是时区的问题!我会告诉你为什么...
看上面的表格,现在我们来做一整天的加法吧……
1 07/18/2012 106 12 0 0
1 07/19/2012 383 41 0 0
1 07/20/2012 8657 1635 2 2
以上是正确的。下面是错误的。
1 07/18/2012 105 11 0 0
1 07/19/2012 384 42 0 0
1 07/20/2012 4167 810 2 2
问题?晚上 8 点之后的任何事情都将持续到第二天。这是一个我必须解决的时区问题。