$dateArr = array("2011-10-15","2011-10-16","2011-10-17")
foreach $dateArr as $value)
{
$query = SELECT * FROM `TABLE` WHERE `captureTime` >= $value.' 00:00:01' AND `captureTime` <= $value.' 23:59:59' GROUP BY FLOOR(HOUR(captureTime) / 4)
}
Как видно из приведенного выше запроса, captureTime в одну и ту же дату с другим временем
eg, captureTime >= '2011-10-15 00:00:00' AND captureTime <='2011-10-15 23:59:59'
captureTime >= '2011-10-16 00:00:00' AND captureTime <='2011-10-16 23:59:59'
captureTime >= '2011-10-17 00:00:00' AND captureTime <='2011-10-17 23:59:59'
Все данные могут быть получены из базы данных с использованием приведенного выше кода.Тем не менее, число элемента $ dateArr будет расти ... может быть, больше 100, поэтому при вышеупомянутом подходе он будет повторяться более 100 раз.
Затем я изменил запрос на следующий:
$query = SELECT * FROM `TABLE` WHERE `captureTime` >= '2011-10-15 00:00:01' AND `captureTime` <= '2011-10-17 23:59:59' GROUP BY FLOOR(HOUR(captureTime) / 4)
Из этого запроса:
captureTime >= '2011-10-15 00:00:00' AND captureTime <='2011-10-17 23:59:59'
Однако можно получить только данные за 2011-10-15из базы данных и нет данных за оставшиеся два дня.
Так что мой вопрос: Как получить все данные из БД без цикла?
Кстати: GROUP BY FLOOR(HOUR(captureTime) / 4)
должны использоваться взапрос в этом случае.