我陷入困境可能是由于我缺乏专业知识。我有以下mysql表:

FDNAME-fcode-时间状态-状态

大学104 2015-03-05 01:37:00关闭

大学104 2015-03-05 01:42:00 ON

大学104 2015-03-05 01:55:00关闭

大学104 2015-03-05 02:00:00 ON

大学104 2015-03-05 07:20:00 OFF

大学104 2015-03-05 07:22:00 ON

大学104 2015-03-05 10:17:00关闭

大学104 2015-03-05 11:16:00 ON

大学104 2015-03-05 12:17:00关闭

大学104 2015-03-05 13:17:00 ON

大学104 2015-03-05 15:19:00关闭

大学104 2015-03-05 16:16:00 ON

大学104 2015-03-05 18:16:00关闭

大学104 2015-03-05 20:16:00 ON

大学104 2015-03-05 21:17:00关闭

大学104 2015-03-05 22:18:00 ON

我需要计算每个时钟小时每个状态“关闭”和“打开”的累积总分钟数。即我应该知道一个fname在每个小时内保持关闭状态的时间。我在php中尝试了很多,但可以找到任何线索。任何机构都可以根据查询或php脚本提供帮助或建议。我会很感激。

最佳答案

考虑到$rs是您适当查询的结果,我相信这会为您提供所需的结果。

$ontime = NULL;
$offtime = NULL;
$totalseconds = 0;

while($r = mysql_fetch_array($rs)){
    if($r["status"] == "OFF"){
        $offtime = strtotime($r["timestate"]);
    }
    if($r["status"] == "ON" AND $offtime !== NULL){
        $ontime = strtotime($r["timestate"]);
        $totalseconds += $ontime - $offtime;
        $offtime=NULL;
        $ontime=NULL;
    }
}


$totalseconds将以秒为单位保留您的总停机时间

09-25 18:32
查看更多