2011-07-14 133 views
1

下面是我有DATETIMEs進入和退出的表格。我想總結每個p_ID的TIMEDIFFs並將它們按p_ID分組。總結DATETIME和分組

t_ID p_ID t_IN      t_OUT 
1 1  2011-07-13 18:54:56  2011-07-13 20:16:12 
2 1  2011-07-14 09:26:56  2011-07-14 09:46:02 
3 1  2011-07-14 10:06:39  2011-07-14 10:56:31 
4 3  2011-07-14 13:07:04  2011-07-14 13:58:35 

我試過幾個的MySQL命令無濟於事......我的最後一次嘗試是這樣的:

SELECT p_ID, TIME_FORMAT(SUM(TIMEDIFF(t_OUT,t_IN)),'%H:%i') AS time FROM timeclock GROUP BY p_ID 

我猜我的命令是不是每個記錄每次的p_id總結..任何幫助?

+0

願意別人幫助我在這一個? – Andrew

回答

1

想通了:

$timeDiffReq = mysql_query("CREATE VIEW totals AS SELECT p_ID, TIME_TO_SEC(TIMEDIFF(t_OUT,t_IN)) AS time FROM timeclock"); 
$timeTotalReq = mysql_query("SELECT p_ID, SEC_TO_TIME(SUM(time)) AS timetotals FROM totals GROUP BY p_ID"); 
while($row = mysql_fetch_array($timeTotalReq)) { 
echo "<div class=\"clockInOut\"><div id=\"name\">" . $row['p_ID'] . " - " . $row['timetotals'] . "</div></div>";} 
$timeTotalDrop = mysql_query("DROP VIEW totals"); 
0

試試這個:

SELECT p_ID, 
     SUM(TIMESTAMPDIFF(HOUR, t_OUT, t_IN)) AS time 
FROM timeclock 
GROUP BY p_ID; 

這只是個小時就目前而言,儘管你可以用分鐘替換它。

+0

這也沒有奏效...無論如何感謝! – Andrew

0

你接近,你只需要一個兩步走的方法,因爲格式化需要得到SUM之後進行,否則它會在聚集的時間差異的方式。
試試這個:

SELECT p_ID, TIME_FORMAT(minutes,'%H:%i') as time 
FROM (SELECT p_ID, SUM(TIMESTAMPDIFF(MINUTE, t_OUT, t_IN)) AS minutes 
    FROM timeclock 
    GROUP BY p_ID) x; 

不確定TIME_FORMAT的格式,但此查詢應接近。

+0

這沒有奏效......雖然謝謝! – Andrew