我有一个表,其中一列表示开始日期时间,一列表示结束日期时间,一列(数量)表示数字。对于一个图表的显示,我需要一个查询,该查询以15分钟的间隔输出“quantity”列中的附加值,并给定开始和结束日期时间。
目前,我正在通过php中的一个循环来解决这个问题,每天创建96个查询。很糟糕,我知道。
表格如下所示,例如:
id from_datetime until_datetime quantity
----------------------------------------------------------------
1 2018-10-30 08:00:00 2018-10-30 09:59:59 5
2 2018-10-30 09:00:00 2018-10-30 10:59:59 1
3 2018-10-30 10:30:00 2018-10-30 11:59:59 3
4 2018-10-30 10:30:00 2018-10-30 14:59:59 3
5 2018-10-30 11:00:00 2018-10-30 13:59:59 2
给定2018-10-30 06:00:00作为开始日期时间,2018-10-30 16:00:00的结果应如下:没有任何结果的时间戳应为一行,数字为零。
timestamp result
------------------------------
2018-10-30 06:00:00 0
2018-10-30 06:15:00 0
2018-10-30 06:30:00 0
2018-10-30 06:45:00 0
2018-10-30 07:00:00 0
2018-10-30 07:15:00 0
2018-10-30 07:30:00 0
2018-10-30 07:45:00 0
2018-10-30 08:00:00 5
2018-10-30 08:15:00 5
2018-10-30 08:30:00 5
2018-10-30 08:45:00 5
2018-10-30 09:00:00 6
2018-10-30 09:15:00 6
2018-10-30 09:30:00 6
2018-10-30 09:45:00 6
2018-10-30 10:00:00 1
2018-10-30 10:15:00 1
2018-10-30 10:30:00 7
2018-10-30 10:45:00 7
2018-10-30 11:00:00 8
2018-10-30 11:15:00 8
2018-10-30 11:30:00 8
2018-10-30 11:45:00 8
2018-10-30 12:00:00 5
2018-10-30 12:15:00 5
2018-10-30 12:30:00 5
2018-10-30 12:45:00 5
2018-10-30 13:00:00 5
2018-10-30 13:15:00 5
2018-10-30 13:30:00 5
2018-10-30 13:45:00 5
2018-10-30 14:00:00 3
2018-10-30 14:15:00 3
2018-10-30 14:30:00 3
2018-10-30 14:45:00 3
2018-10-30 15:00:00 0
2018-10-30 15:15:00 0
2018-10-30 15:30:00 0
2018-10-30 15:45:00 0
2018-10-30 16:00:00 0
我的php解决方案工作,但非常饥饿和缓慢。当然,这可以通过一个查询来解决,但是我多次尝试都失败了。
干杯,埃里克
my php是一个带有php datetime对象的简单循环:
$begin = new DateTime("2018-10-30 06:00:00");
$end = new DateTime("2018-10-30 16:00:00");
$interval = DateInterval::createFromDateString('15 minutes');
$period = new DatePeriod($begin, $interval, $end);
foreach ( $period as $dt ) {
$check_from = new DateTime($dt->format("Y-m-d H:i"));
$check_until = new Datetime($dt->format("Y-m-d H:i"));
// MySql-Query and write Array with the data
}
暂无答案!
目前还没有任何答案,快来回答吧!