从按天分组的MYSQL数据库中选择记录

时间:2013-02-19 15:36:59

标签: php mysql codeigniter timestamp

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

以下是我的表格截图:

enter image description here

到目前为止,这是我的模型功能:

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)。

由于

2 个答案:

答案 0 :(得分:4)

试试这个:

SELECT *, DATE(time) AS date FROM [whatever you want] GROUP BY date

答案 1 :(得分: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%'