php - 根据进出时间计算迟到/早到时间

标签 php mysql sql time

我有 table - 出席

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 来计算这个结果?我怎样才能得到这个结果?

最佳答案

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

然后用“TIMEDIFF()”来比较次数,得到差值。

如果您的 DB-Layout 已设置,请使用 ADDTIME将不同的列合并到一个 DATETIME 列中,如下所示:

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

关于php - 根据进出时间计算迟到/早到时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18718925/

相关文章:

php - mysql子查询返回多行

php - 我正在制作一个带有 map 的 PHP 游戏,我有一些问题

php - 如何检查一个值是否已经存在以避免重复?如果存在则什么都不做,否则将记录插入数据库

sql - 在sql server中查找特定数据的最大值

php - 页数不会为计数字段添加 +1

php - 将字符串参数传递给 WP REST API

php - 当发生太多 $.getJSON 请求时,keyup 函数会卡住页面

php - 关联两个表

php - 这个php函数应该递归运行吗?

sql - 将参数从存储过程传递到函数(在存储过程中)