2014-01-28 4 views
0

У меня есть таблица в MySQL:PHP MySQL выбрать с группой по диапазону дат

table

Вопрос: Как группа каждую строку на 1 часовом интервале от диапазона?

Wanted выход:

range1 = 2014-01-28 00:00:00 to 2014-01-28 01:00:00 
range2 = 2014-01-28 01:00:00 to 2014-01-28 02:00:00 
range3 = 2014-01-28 02:00:00 to 2014-01-28 03:00:00 
... 

Array 
(
    [range1] => Array 
     (
      [id] => 1 
      [time] => 2014-01-28 00:00:00 
     ) 

    [range2] => Array 
     (
      [id] => 2 
      [time] => 2014-01-28 01:05:00 
     ) 

    [range3] => Array 
     (
      [id] => 3 
      [time] => 2014-01-28 02:00:00 
     ) 

) 

Моя попытка:

PHP:

function get_data() { 
    $start = date("Y-m-d 00:00:00"); 
    $end = date("Y-m-d H:i:s", strtotime('+1 DAY', strtotime($start))); 
    $q = " 
     SELECT * 
     FROM table 
     WHERE (time BETWEEN '" . $start . "' AND '" . $end . "') 
    "; 
    $select = mysqli_query($this->c, $q); 
    while ($row = mysqli_fetch_assoc($select)) { 
     $data[] = $row; 
    } 
    return $data; 
} 

Токовый выход:

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [time] => 2014-01-28 00:00:00 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [time] => 2014-01-28 01:05:00 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [time] => 2014-01-28 02:00:00 
     ) 

) 
+0

Ваш разыскиваемый выход не имеет смысла для меня. Можете ли вы предоставить его в виде таблицы? –

ответ

0
SELECT * FROM table WHERE time BETWEEN '$start' AND '$end' GROUP BY DATE(time),DATEPART(hh,time) 

Этот запрос будет Группировать час того же дня, где время от 2 до значений

Смежные вопросы