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


PHP MySQL query- group by date in datetime field

我一直在搜索,我知道有类似的问题,但似乎没有一个能回答这个特定的问题。

我正试图统计一名员工按照既定时间表工作的总天数。为了做到这一点,我正在计算员工出现在"日程表"表上的总行数。只有当员工在同一天被安排两次时,我们才会遇到问题。

为了解决这个问题,我想计算DATETIME字段中的总行数并按DATE排序。

当前查询:

$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);

有什么想法吗?

如果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行。