Mysql 求和日期时间和分组

Mysql 求和日期时间和分组,mysql,datetime,sum,Mysql,Datetime,Sum,这是我的一张有日期时间进出的桌子。我想对每个p_ID的时间差求和,并按p_ID对它们进行分组 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-1

这是我的一张有日期时间进出的桌子。我想对每个p_ID的时间差求和,并按p_ID对它们进行分组

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的每个记录求和。。。有什么帮助吗?

试试这个:

SELECT p_ID,
       SUM(TIMESTAMPDIFF(HOUR, t_OUT, t_IN)) AS time
FROM timeclock
GROUP BY p_ID;
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;
现在只需要几个小时,不过你可以用几分钟来替换它。

试试这个:

SELECT p_ID,
       SUM(TIMESTAMPDIFF(HOUR, t_OUT, t_IN)) AS time
FROM timeclock
GROUP BY p_ID;
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;

现在只需要几个小时,但你可以用几分钟来替换它。

你很接近,你只需要两步的方法,因为格式化需要在获得
总和之后完成,否则它会妨碍聚合时间差。
试试这个:

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;

不确定时间\u格式的格式,但此查询应该是关闭的。

如果您已经关闭,您只需要两步方法,因为格式设置需要在获得
总和之后完成,否则它会妨碍聚合时间差。
试试这个:

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;
不确定时间\u格式的格式,但此查询应已关闭。

已解决此问题:

$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");
$timeDiffReq=mysql\u查询(“创建视图总计作为选择p\u ID,时间到秒(TIMEDIFF(t\u OUT,t\u IN))作为时间时钟的时间”);
$timeTotalReq=mysql_查询(“按p_ID从总计组中选择p_ID、秒到时间(总和(时间))作为时间总计”);
while($row=mysql\u fetch\u数组($timeTotalReq)){
echo“$row['p_ID']”-“$row['timetotals']”;}
$timeTotalDrop=mysql_查询(“下拉视图总计”);
找到了答案:

$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");
$timeDiffReq=mysql\u查询(“创建视图总计作为选择p\u ID,时间到秒(TIMEDIFF(t\u OUT,t\u IN))作为时间时钟的时间”);
$timeTotalReq=mysql_查询(“按p_ID从总计组中选择p_ID、秒到时间(总和(时间))作为时间总计”);
while($row=mysql\u fetch\u数组($timeTotalReq)){
echo“$row['p_ID']”-“$row['timetotals']”;}
$timeTotalDrop=mysql_查询(“下拉视图总计”);

还有谁能帮我解决这个问题吗?还有谁能帮我解决这个问题吗?