Php 创建以小时为间隔的周表
我有一个“orders”表,其中有一个timestamp字段,因此数据如下所示:Php 创建以小时为间隔的周表,php,mysql,group-by,html-table,Php,Mysql,Group By,Html Table,我有一个“orders”表,其中有一个timestamp字段,因此数据如下所示: id | createdate | customerid 1 | 2013-10-03 09:35:20 | 5 2 | 2013-10-03 09:35:20 | 9 3 | 2013-10-04 15:00:20 | 5 4 | 2013-10-05 12:15:20 | 5 Hours | Monday | Tuesday | Wednesday
id | createdate | customerid
1 | 2013-10-03 09:35:20 | 5
2 | 2013-10-03 09:35:20 | 9
3 | 2013-10-04 15:00:20 | 5
4 | 2013-10-05 12:15:20 | 5
Hours | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday
9:30 - 10 | 0 | 0 | 0 | 2 | 0 | 0
10-11 | 0 | 0 | 0 | 0 | 0 | 0
11-12 | 0 | 0 | 0 | 0 | 1 | 0
因此,从这个表中,我需要创建一个html表,上面显示Mon Saturday,侧面显示小时,如下所示:
id | createdate | customerid
1 | 2013-10-03 09:35:20 | 5
2 | 2013-10-03 09:35:20 | 9
3 | 2013-10-04 15:00:20 | 5
4 | 2013-10-05 12:15:20 | 5
Hours | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday
9:30 - 10 | 0 | 0 | 0 | 2 | 0 | 0
10-11 | 0 | 0 | 0 | 0 | 0 | 0
11-12 | 0 | 0 | 0 | 0 | 1 | 0
现在我得到的是:
SELECT DATE_FORMAT( createdate, '%m/%d/%Y' ) AS createdate
, DATE_FORMAT( createdate, '%H' ) AS createhour, COUNT( * ) AS totals
FROM orders
WHERE createdate >= CURDATE( ) - INTERVAL DAYOFWEEK( CURDATE( ) ) +6
DAY AND createdate < CURDATE( ) - INTERVAL DAYOFWEEK( CURDATE( ) ) -1
DAY GROUP BY DATE_FORMAT( createdate, '%m/%d/%Y' ) , DATE_FORMAT( createdate, '%H' )
选择日期\u格式(createdate,“%m/%d/%Y”)作为createdate
,日期\格式(createdate,“%H”)为createhour,计数(*)为总计
从命令
其中createdate>=CURDATE()-间隔DAYOFWEEK(CURDATE())+6
DAY和createdate
这会返回数据,但不是我需要的格式,有没有办法在mysql中实现?或者它涉及到php中使用数组的一些工作吗?这可能会有所帮助,而且可以使用
while
循环来完成。看看这个问答,我会选择混合解决方案。在SQL中按日期分隔,在PHP中按小时分组。还要注意的是,Hours列不是固定的时间间隔,这会使纯SQL变得效率低下且难以读取solution@Fred-ii-谢谢,但那没有帮助,我知道如何将mysql中的值转换成php,这对我来说不是问题,但再次感谢。@MostyMostacho这就是我所想的混合解决方案,但仍然不太确定我需要什么数据以及如何在php中通过数组将其分离?@Andres不客气。我的印象是,您希望它按照您的草图在HTML表中格式化。