2015-08-15 154 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時間表;