2013-10-23 52 views
1

以下查詢返回start_time和end_time中的時間戳,以及每個時間戳之間的差異(以秒/ 60爲單位)(分鐘)。我也計算在前15天,因爲總數需要成爲「滾動總數」。每天有多個時間戳。MySQL按日期添加時間戳值,添加結果集和分組

我想要做的就是加起來總「時間差別」的每一天,並返回如下分組在一起的日子:

2013年10月8日 - 小時:分鐘:秒

2013年10月9日 - 小時:分鐘:秒

SELECT start_time, end_time, 
SUM(TIMESTAMPDIFF(second, start_time, end_time) /60) as `Time Diff` 
FROM time 
WHERE start_time >= DATE_SUB(NOW(), INTERVAL 15 DAY) 
AND user_id = 'xx' 
GROUP BY start_time, end_time 
+0

一位朋友幫我解答: SELECT'DATE(start_time)AS'Date',SUM(TIMESTAMPDIFF(second,start_time,end_time)/ 60)as'Time Diff' FROM WHERE start_time> = DATE_SUB(NOW(),INTERVAL 15 DAY) AND user_id ='xx' GROUP BY DATE(start_time) –

回答

1

你不需要做GROUP BY start_time, end_time如果你有一列日期(我建議你創建列日期的Grou ps'時差')。
這裏是我的例子:
我的表(名爲時間)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    date |  starttime  |  endtime  | 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
2013-10-23 | 2013-10-23 08:00:00 | 2013-10-23 16:30:00 | 
2013-10-24 | 2013-10-24 08:30:00 | 2013-10-24 17:00:00 | 

這是我的查詢,顯示開始時間和結束時間之間的不同時間:

SELECT *, TIMEDIFF(endtime,starttime) AS duration FROM time 

則回覆:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    date |  starttime  |  endtime  | duration | 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
2013-10-23 | 2013-10-23 08:00:00 | 2013-10-23 16:30:00 | 08:30:00 | 
2013-10-24 | 2013-10-24 08:30:00 | 2013-10-24 17:00:00 | 08:30:00 | 

這就是說,如果您將date列設置爲與starttime和endti不同的列我。
你沒有給我你的桌子的結構,所以我不能清楚地看到你的問題。

UPDATE:
我假設你有一個像這樣的表: table data
,可以是你的事是:calculate the time between starting time and ending time from a day of a user that the user could start and stop in anytime (at that day)
我運行此查詢做到這一點:

SELECT *, TIMEDIFF(MAX(end),MIN(start)) AS duration FROM time 
GROUP BY user_id, date 
ORDER BY date ASC; 

它會返回此:
result 1
或者如果您運行此查詢:

SELECT 
user_id, 
MIN(start) AS start, 
MAX(end) AS end, 
TIMEDIFF(MAX(end),MIN(start)) AS duration 
FROM time 
GROUP BY user_id, date 
ORDER BY date ASC 

它會返回此:
result 2

+0

Oki,表結構只是user_id,start_time,end_time。每天有多個條目,因此2013-10-01可能會有20個條目。 –

+0

是否意味着它可以是每個用戶每天20個條目(20/day/user或20/user/day)或20個所有用戶條目(20/day)? –

+0

我的答案已更新 –