2013-02-19 3 views
1

MySQL에서 출석을 계산하는 방법에 대한 아이디어가 있으시면 datetime.출석에 2 타임 스탬프를 계산

예 : 나는 한 사람이 하루 동안 일한 총 시간을 얻고 싶습니다. 있음.

MySQL의 구조 :

----------------------------------------------------- 
id | datetime   | Status | employeeID 
----------------------------------------------------- 
1 | 18-Feb-13 8:00:00 | Check in | 100A 
2 | 18-Feb-13 10:00:00 | Check in | 100A 
3 | 18-Feb-13 17:00:00 | Check Out | 100A 

여전히 총 ​​시간은 휴식 시간을 오후 12시을 제외하고 8 시간입니다.

+0

데이터 세트가 완료 되었습니까? 체크 아웃 상태가 누락 되었습니까? –

+0

[무엇을 시도해 봤습니까?] (http://www.whathaveyoutried.com/) [ask advice] (http://stackoverflow.com/questions/ask-advice)를 참조하십시오. –

답변

0

다음은 날짜 계산을 할 수있는 PHP의 방법 :

$datetime1 = DateTime::createFromFormat('d-M-Y G:i:s', '18-Feb-13 8:00:00'); 
$datetime2 = DateTime::createFromFormat('d-M-Y G:i:s', '18-Feb-13 17:00:00'); 
$interval = $datetime1->diff($datetime2); 
$elapsed = $interval->format('%h hours %i minutes %S seconds'); 
echo $elapsed; 

See it in action

당신은 휴식을 다루는 더 수학을해야합니다

그러나 이것은 당신이 시작하는 것이다. 사람들이 떠날 때 어디 상태를 체크 아웃해야하는 경우에, 당신이 자신을 할 수

참조

+0

이것은 많은 도움이 될 것입니다. 정말 고마워! – Japeth

0

가입.
뭔가 같은 : A는 여기

SELECT TIMESTAMPDIFF(HOUR, 
      MIN(CASE WHEN Status = 'Check In' THEN DateTime END), 
      MAX(CASE WHEN Status = 'Check Out' THEN DateTime END))-1 as HoursWorked, 
    EmployeeId, 
    Date(DateTime) 
FROM YourTable T 
GROUP BY EmployeeId, Date(DateTime) 

그리고 : 작동 가정 모두가 정오에 시간을 소요

Select day(e.datetime) as day, employeeid, 
     (max(e.datetime) - min(s.datetime)) as timespend 
from table1 e 
inner join table1 s on (day(e.datetime) = day(s.datetime) and e.id <> s.id) 
where s.status = 'check in' and e.status = 'check out' 
group by day(e.datetime), employeeid 
0

,이 쿼리는 각 직원 및 각 날짜별로 그룹화, TIMESTAMPDIFF를 사용하여 작동합니다 샘플 SQL Fiddle.

+0

이것은 굉장합니다. 고마워 친구! – Japeth

+0

@Japeth - 아무런 문제가 없으므로 기꺼이 도와 드리겠습니다. :) 답변으로 도움이 되었다면, 사이트의 향후 사용자를 돕기 위해 승인 된 것으로 표시해 주시기 바랍니다. 행운을 빌어 요! – sgeddes

+0

네, 할게요. 고맙습니다. 더 올 것이다! – Japeth

관련 문제