0

我有一个带有时间戳的记录数据库。我想从数据库中提取按天分组的记录,所以如果有相同日期(24 小时跨度)的其他记录,我希望将它们组合在一起。这可以用 MYSQL 完成,还是我必须使用 PHP 提取记录并将它们组织成数组?

这是我的桌子的截图:

在此处输入图像描述

到目前为止,这是我的模型函数:

public function getUsersMoves($options) {   
        $query = "SELECT * FROM myzone_user_hr_records";
        if(isset($options['GUID'])) {
            $query .= " WHERE GUID = '" . $options['GUID'] . "'";
        }
        if((isset($options['minHR'])) &&  isset($options['maxHR'])) {
            $query .= " AND (hr BETWEEN '" . (int)$options['minHR'] . "' AND '" . (int)$options['maxHR'] . "')";
        } else if (isset($options['zone'])) {
            $query .= " AND zone = '" . (int)$options['zone'] . "'";
        }
        if(isset($options['activity'])) {
            $query .= " AND title = '" . $options['activity'] . "'";
        }

        $query .= " ORDER BY time DESC";

        $query = $this->db->query($query);
        return $query->result_array();
    }

我的控制器代码:

$moves = $this->myzone_model->getUsersMoves($options);

我希望对数据进行排序,以便如果这些记录在时间戳中具有相同的日期,则将它们组合在一起,例如(2012-11-20)。

谢谢

4

2 回答 2

4

试试这个 :

SELECT *, DATE(time) AS date FROM [whatever you want] GROUP BY date
于 2013-02-19T15:40:38.297 回答
1
select * from TABLE where `time` like '2012-11-20%'

我建议的选项有效,因为 WHERE 中的 LIKE 条件从时间字段中选择以 开头的所有日期2012-11-20。这意味着一天中的时间无关紧要,它将返回当天的所有结果。

要完成这项工作,您必须记住使用 LIKE,然后在末尾添加通配符 - %。如果需要,您还可以在开头添加通配符。返回多年所有天数(12 月 11 日)的示例如下:

SELECT * FROM TABLE WHERE `time` like '%-12-11%'
于 2013-02-19T15:46:25.930 回答