2013-07-15 3 views
2
SELECT empno , date_created , 
min(CASE WHEN status = 0 THEN time_created END) time_in, 
max(CASE WHEN status = 1 THEN time_created END) time_out 
FROM biometrics 
WHERE empno = 3 
GROUP BY empno , date_created 

В этом синтаксисе он только определяет первый в и последний из работника, но я хотел бы спросить, как я могу вычислить разницу во времени или общее время его/ее между первый IN и последний из сотрудника.Разница во времени Рассчитать в MySQL

Например, работник «первый в 9:00 утра» и последний из них - 16:00:00 днем. Как я могу вычислить общую работу часов этого сотрудника?

ответ

1

Пожалуйста, попробуйте следующее:

select 
    empno, 
    date_created, 
    time_in, 
    time_out, 
    time_format(timediff(time_out, time_in), '%H:%i') as total_time 
from 
(
    SELECT empno, date_created, 
    min(CASE WHEN status = 0 THEN time_created END) time_in, 
    max(CASE WHEN status = 1 THEN time_created END) time_out 
    FROM biometrics 
    WHERE empno = 3 
    GROUP BY empno, date_created 
) t1; 
0

К этому вы можете найти разницу в часах между firstin и lastout

 

SELECT DATEDIFF(hour, firstin(datetime), lastout(datetime)) FROM table_name