简体   繁体   English

PHP MySQL选择按日期范围分组

[英]PHP mysql select with group by date range

I have table in MySQL: 我在MySQL中有表:

表

Question: How to group each row by 1 hour interval from range? 问题:如何按照距离范围1小时的间隔对每一行进行分组?

Wanted output: 想要的输出:

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
        )

)

My try: 我的尝试:

PHP: 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;
}

Current output: 电流输出:

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
        )

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

该查询将按当天的小时分组,其中两个值之间的时间

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM