我一直在寻找,我知道有类似的问题,但似乎没有人回答这个问题。
我试图计算一个员工按照给定的时间表工作的总天数。为此,我计算员工在“计划”表中显示的总行数。如果员工在同一天安排了两次,那么我们才会遇到问题。
要解决此问题,我想计算总行数,并在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);
有什么想法吗?
答案 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
行。