我有一个记录数据库,其中包含与它们相关的时间戳。我想从按天分组的数据库中提取记录,因此如果有其他记录具有相同的日期(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)。
由于
答案 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%'