2011-07-14 13 views
1

ここにはDATETIMEを出し入れしたテーブルがあります。私は、p_IDごとにTIMEDIFFsを集計し、それらをp_IDでグループ化したいと思います。合計DATETIMESとグループ化

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は無駄にコマンドを試してみた:私は私のコマンドはP_IDあたりのレコードごとに合算されていない推測している

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

..どんな助け?

+0

を他の誰がこの1に私を助けますか? – 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を取得した後でフォーマットを完了する必要があるので、2ステップアプローチが必要です。それ以外の場合は、時間差分を集計する方法になります。 TIME_FORMATのフォーマットについて

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; 

わからないが、このクエリは近いはずである:
はこれを試してみてください。

+0

これはうまくいかなかった...ありがとう! – Andrew