2015-08-15 160 views
0

我必须为遍布全球的所有人员建立24小时时间表。24小时时间表 - 时间差

因此,举例来说,某人可以开始工作10:00,结束于19:00工作,所以它是非常简单的,因为获得结束时间的时间差和开始时间是在同一天。但是,如果我有一个人在19:00开始工作,第二天在04:00结束,我会得到负面的时间差。

我需要这样做不断,没有具体日期,但它必须每周重复。你能给我一个想法什么是最好的方法来做到这一点?

+------------------+-----+------------+----------+-----------+ 
| name    | day | start_time | end_time | total  | 
+------------------+-----+------------+----------+-----------+ 
| Test01   | fri | 06:00:00 | 15:00:00 | 09:00:00 | 
| Test    | fri | 07:00:00 | 16:00:00 | 09:00:00 | 
| Test02   | fri | 08:00:00 | 14:30:00 | 06:30:00 | 
| Pablo Quesada | fri | 22:00:00 | 01:30:00 | -20:30:00 | 
+------------------+-----+------------+----------+-----------+ 

回答

0

我觉得case语句做你所需要的:

select (case when start_time < end_time 
      then timediff(end_time, start_time) 
      else timediff(addtime(end_time, '24:00:00', start_time)) 
     end) 
0

您可以使用一个简单的if语句:

SELECT IF(end_time > start_time, 
      end_time - start_time, 
      end_time + 240000 - start_time) as total 
FROM timetable; 
0

您可以使用PHP's time function这项任务。 time()返回自1970年1月1日以来的秒数。

商店开始时间(例如)

$startTime = time() + (2 * 3 * 20 * 43); // now + 2days, 3hrs, 20mins; 43secs 

和他们的结束时间之后一段时间。如果从结束时间中减去开始时间,结果将始终是他们花费在正常工作时间内的正数。由于$ time函数返回自1970年1月1日以来的秒数,所以您也不需要日期列,因此您也有免费的日期。

在你的用户界面,然后你可以得到的秒数使用PHP's date function格式化成可用的时间和日期。

0

感谢您的反馈球员。在你的帮助下,我做了如下:

select IF(end_time> start_time,TIMEDIFF(end_time,start_time),TIMEDIFF(addtime(end_time,'24:00')',start_time))Total_Hours from时间表;