2011-10-13 4 views
3

나는 비슷한 질문이 있다는 것을 알고 있었지만 아무도이 특정 질문에 답하는 것 같지 않습니다.PHP datetime 필드의 MySQL 쿼리 그룹 날짜 :

직원이 주어진 일정에 따라 일한 총 일수를 계산하려고합니다. 이렇게하려면 직원이 "일정"테이블에 나타나는 총 행 수를 계산합니다. 직원이 같은 날에 두 번 예정된 경우에만 문제가 발생합니다.

이 문제를 해결하기 위해 총 행 수를 계산하고 DATETIME 필드에서 DATE별로 정렬하려고합니다.

현재 쿼리

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

어떤 생각 :

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

내가로 변경 하시겠습니까?

+0

두 번째 쿼리의 문제점은 무엇입니까? 그게 네가 원하는거야? 날짜를 표시하고 주문한 경우 주문한 날짜에'ORDER BY start_date '를 추가하십시오. –

+0

정확한 datetime으로 정렬됩니다. 날짜 시간은 두 번째로 내려갑니다. 두 가지가 같지 않습니다. 이것은 날짜를 포함하지 않고 시간 만 그룹화해야합니다. – Oseer

답변

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

날짜 기능이 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date

이 의지 "날짜 또는 날짜 식의 날짜 부분을 추출을" emp_id가 주어진 날짜에 두 번 이상 사용되는 행만 제공합니다. 모든 것을보고 싶다면 HAVING 행을 제거하십시오.

+0

환상적! 고맙습니다. – Oseer