从进/出时间计算迟到/提前到达

时间:2013-09-10 12:25:18

标签: php mysql sql time

我有桌子出席

staff_id |   in_date  |  out_date  | shift_in | shif_out | in_time  | out_time 
    1      2013-09-10   2013-09-10   06-30-00   15-00-00   07-00-00   15-00-00
    2      2013-09-10   2013-09-11   20-00-00   06-00-00   19-00-00   06-00-00
    3      2013-09-10   2013-09-11   23-00-00   06-00-00   23-30-00   07-00-00

我需要得到结果

staff_id | late_time | early_time | extra_time 
    1      00-30-00    00-00-00     00-00-00
    2      00-00-00    01-00-00     00-00-00
    2      00-30-00    00-00-00     01-00-00

我可以从mysql查询本身实现结果还是需要使用PHP来计算?我怎样才能得到这个结果?

1 个答案:

答案 0 :(得分:0)

首先,我会在一个列中使用“DATETIME”,而不是使用DATE列和TIME列 - 这样可以更容易地比较日期并获得差异。

然后使用“TIMEDIFF()”比较时间以获得差异。

如果您的数据库布局已设置,请使用ADDTIME将不同的列合并到一个DATETIME列中,如下所示:

SELECT TimeDiff(AddTime(in_date,shift_in), AddTime(out_date,in_time)) AS late_time