假设表名为sbxx,可以使用以下SQL语句查询昨天设备的在线时间:

SELECT id, SUM(TIMESTAMPDIFF(SECOND, sj, COALESCE((SELECT MIN(sj) FROM sbxx s2 WHERE s2.id = sbxx.id AND s2.sj > sbxx.sj), NOW())))) AS yesterday_online_time
FROM sbxx
WHERE sj >= DATE_SUB(NOW(), INTERVAL 1 DAY) AND sj < NOW()
GROUP BY id;

解释:

  1. 使用TIMESTAMPDIFF函数计算设备上次离线时间到当前时间的秒数,即在线时间。

  2. 使用COALESCE函数获取设备上次离线时间。如果设备一直在线,则使用当前时间。

  3. 使用子查询获取设备上次离线时间。如果设备的上线记录是第一条,则使用NULL代替。

  4. 使用SUM函数累计设备的在线时间。

  5. 使用GROUP BY语句按设备id分组,得到每个设备的昨天在线时间。

目前有张表sbxx记录着设备上线下线的时间字段有:id 为设备idsj为时间字段ljxx为设备连接信息业务逻辑是使用ljxx中的在线时间减去设备上次离线时间累计总在线时长怎么使用sql查询数据昨天在线时间

原文地址: https://www.cveoy.top/t/topic/ENX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录