mysql计算两个时间的差以及保留小数点后3位

测试时需要验证页面展示的数据是否正确,如下页面展示所示,验证平均耗时以及数量是否正确

 1、需求:耗时=结束时间-开始时间,平均耗时=总耗时/数量

 2、看表的基本数据,开始时间和结束时间格式如:2020-12-20 12:09:23.123

 3、先计算两个时间差

SELECT UNIX_TIMESTAMP('2020-12-20 12:09:23.123') - UNIX_TIMESTAMP('2020-12-20 12:09:23.121')

结果是0.002,实际的结果应该是2毫秒,所以需要把所得结果*1000

 4、核对页面数据

SELECT t.node AS '节点', COUNT(1) AS '数量', ROUND(SUM(t.hs)/COUNT(1) , 3) AS '平均耗时'  FROM 
 (SELECT a.nodeNo AS node , a.`startTime`, a.`endTime`, ((UNIX_TIMESTAMP(a.`endTime`)-UNIX_TIMESTAMP(a.`startTime`)) *1000) AS hs 
 FROM  tb1 a 
 WHERE  具体的查询条件
  ) t 
 GROUP BY t.node ; 
 

 查询后可得到真实的平均耗时值,与列表展示的不一样,分析数据可知是页面展示的数据未除数量,所以页面展示的数据有误


5、补充:保留小数点后3位的方法

-- 不四舍五入,直接截取
SELECT TRUNCATE(4545.1366,3);
-- 四舍五入
SELECT ROUND(4545.1366,3);
-- 四舍五入,但是中间有逗号隔开
SELECT FORMAT (4545.1366,3);
 
原文地址:https://www.cnblogs.com/simple1025/p/14208100.html