PHP MySQL查询 - 在datetime字段中按日期分组

时间:2011-10-13 13:46:43

标签: php mysql datetime

我一直在寻找,我知道有类似的问题,但似乎没有人回答这个问题。

我试图计算一个员工按照给定的时间表工作的总天数。为此,我计算员工在“计划”表中显示的总行数。如果员工在同一天安排了两次,那么我们才会遇到问题。

要解决此问题,我想计算总行数,并在DATETIME字段中按日期排序。

当前查询:

$days = mysql_query("SELECT emp_id FROM schedules 
                     WHERE sch_id = '$sch_id' 
                     AND emp_id = '$emp_data[emp_id]'"); 

$tot_days = mysql_num_rows($days);

我想将其更改为:

$days = mysql_query("SELECT emp_id FROM schedules 
                     WHERE sch_id = '$sch_id' 
                     AND emp_id = '$emp_data[emp_id]'
                     GROUP BY start_date"); 
// "start_date" is a datetime field. Need to sort by date only YYYY-MM-DD
$tot_days = mysql_num_rows($days);

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果您的start_date列是MySQL日期时间类型,则可以使用以下内容:

$days = mysql_query("SELECT start_date, count(*) FROM schedules 
                 WHERE sch_id = '$sch_id' 
                 AND emp_id = '$emp_data[emp_id]'
                 GROUP BY DATE(start_date)
                 HAVING count(*) > 1
                 ORDER BY DATE(start_date)"); 

DATE函数“提取日期或日期时间表达式的日期部分” http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date

这将只为您提供在给定日期内多次使用被考虑的emp_id的行。如果您想查看所有内容,请移除HAVING行。