1

テーブル名: タイムログ

TimeLogID | EmployeeID | TimeLog
------------------------------------------
1         | 1          | 1/1/2013 11:00 PM
2         | 1          | 1/2/2013 07:00 AM
3         | 1          | 1/2/2013 11:00 PM
4         | 1          | 1/3/2013 07:00 AM

テーブル名: スケジュール

ScheduleID | EmployeeID | TimeIN   | TimeOUT
----------------------------------------------
1          | 1          | 11:00 PM |  07:00 AM

ここでの問題は、従業員が午後 11 時に勤務を開始し、午前 7 時に終了した場合に従業員が費やした時間を計算するクエリを作成するにはどうすればよいかということです。誰かがこの問題で私を助けてくれることを願っています。ありがとう。

基本的に、私はすべての就業日で働いた時間が必要です。

4

2 に答える 2

1

このクエリを使用できます

select
  e.TimeLogID,
  e.EmployeeID,
  ifnull(TIMESTAMPDIFF(HOUR,e.TimeLog,la.TimeLog),0) as timediff
from emp_time as e
left join (
        select 
            * 
        from emp_time
    ) as la on la.TimeLogID = (
                    select  
                        min(TimeLogID ) 
                    from emp_time 
                    where TimeLogID  > e.TimeLogID  
                    limit 1
                );

出力

TimeLogID EmployeeID timediff 
1           1           20 
2           1           4 
3           1           20 
4           1           0 
于 2013-01-28T13:12:48.413 に答える