好的,我的表格如下:
id | status(bool) | devicename(text) | datetime (timestamp) | kwh(float)
1 | 0 | Light | 2012-04-17 00:40:12 | 0.6
是数据的典型示例。现在我想弄清楚设备的运行时间(状态)。我想在每组状态TIMEDIFF(expr1,expr2)
之间使用{1, 0}
因为我认为它非常适合这种任务。
我尝试创建一个查询,在那里我可以获得1-> 0的对,并计算出相应的时差。还有一个问题,即如果最后一个值打开,我想让它计算出ON时间点和当前时间之间的时间差。我知道有一种比手动使用php分析表结果更简单的方法。
非常感谢
答案 0 :(得分:0)
好吧,如果你真的想在MySQL中使用它:
SET @total = 0, @lasttime = 0, @laststatus = 0;
SELECT IF(`status`=0,
@total := IF(@lasttime=0,
0,
@total+TIMEDIFF(`datetime`,@lasttime)
),
@lasttime := `datetime`
), (@laststatus := `status`) FROM `table`;
SET @total = @total + IF(@laststatus=1,TIMEDIFF(NOW(),@lasttime),0);
SELECT @total AS `result`
老实说,它只是更容易选择所有行并让PHP处理它。