在 MySQL 5.7 查询两列值(类型为 timestamp)相减的平均数

1、有两列值,分别为创建时间与更新时间,需要统计出在所有记录中,两列值相减的平均数。如图1

图1

2、如果列类型为 timestamp,那么需要将其转换为时间戳以进行运算。可以使用 UNIX_TIMESTAMP 函数将时间戳转换为秒数。先仅查询 2 条记录,以将结果与人工计算进行对比。SQL 如下,对比结果是相等的,结果等于 47。如图2

图2

id created_at updated_at                   差值
45 2022-12-06 10:19:48 2022-12-06 10:20:36 48 
46 2022-12-13 08:22:45 2022-12-13 08:23:31 46
SELECT AVG(UNIX_TIMESTAMP(`updated_at`) - UNIX_TIMESTAMP(`created_at`)) AS avg_diff FROM `table` WHERE `id` IN (45,46);

3、最后统计时,可以省去 where 条件,或者调整 where 条件。结果符合预期。如图3

图3

永夜