2013-02-19 136 views
0

我有一个记录数据库与他们分享了时间戳。我想从数据库中提取记录,因此如果有其他记录的日期相同(24小时),我希望将它们组合在一起。这可以通过MYSQL来完成,还是必须使用PHP将记录拉到数组中?从MYSQL数据库中选择记录按天分组

这里是我的表的截图:

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

感谢

+0

你面临的问题是什么? – 2013-02-19 15:40:12

+0

只有在select语句中使用某些聚合函数时,才可以使用group by ...... – 2013-02-19 15:41:58

回答

4

试试这个:

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

这就是我一直在寻找的感谢。 – devoncrazylegs 2013-02-19 16:18:42

1
select * from TABLE where `time` like '2012-11-20%' 

我建议的作品,因为在WHERE LIKE条件的选择从与2012-11-20开始时间字段所有日期的选项。这意味着无论白天几点时间,它都会返回当天的所有结果。

为了使这项工作,你必须记住使用像,然后添加通配符末 - %。如果需要,您还可以在开头添加通配符。一个例子返回所有天(12月11日)多年将是:

SELECT * FROM TABLE WHERE `time` like '%-12-11%' 
+0

如果你解释它会很好。 – wtsang02 2013-02-19 16:10:20

+0

@ wtsang02这里没有什么可以解释的。您只需查询表格,并且使用通配符在TIME字段中存在WHERE条件。 LIKE部分意味着它不会逐字比较,它只比较第一部分(日/月/年组合),其余部分可以是任何东西(因为通配符)。因此,任何不同的时间(在同一天)仍然会返回。 如果您想了解更多信息,请查看: http://dev.mysql.com/doc/refman/5.0/zh-CN/string-comparison-functions.html – James 2013-02-19 16:11:41

+0

如果您键入系统,系统会自动标记为低质量答案太少。向代码添加一些解释总是更好。 – wtsang02 2013-02-19 16:15:53