Как получить данные за промежуток времени без зацикливания - PullRequest
0 голосов
/ 11 ноября 2011
    $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) должны использоваться взапрос в этом случае.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

Что такое тип данных для captureTime? Если это дата и время, лучше использовать МЕЖДУ вместо операторов сравнения.

например.

$ query = SELECT * FROM TABLE WHERE captureTime МЕЖДУ '2011-10-15 00:00:01' И '2011-10-17 23:59:59' GROUP ПО ЭТАЖУ (ЧАС (captureTime) / 4)

PS. Вышеупомянутый запрос не запущен, поэтому может иметь синтаксические ошибки

0 голосов
/ 11 ноября 2011

Используйте оператор BETWEEN, который также использует AND, но в этом случае это не логическое AND. Пример:

captureTime МЕЖДУ '2011-10-15 00:00:00' И '2011-10-17 23: 59: 59'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...