Выберите между двумя столбцами даты с интервалом - PullRequest
0 голосов
/ 31 октября 2018

У меня есть таблица со столбцом для даты начала и окончания и даты и столбца (количество) с номером. Для отображения диаграммы мне нужен запрос, который выводит добавленные значения из столбца «количество» с интервалом в 15 минут с указанием даты начала и конца.

В настоящее время я решаю эту проблему с помощью цикла в 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-решение работает, но очень голодное и медленное. конечно, это можно решить одним запросом, но я потерпел неудачу во многих попытках.

Cheers, Eric

Мой 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...