mysql sum()函数计算时间类型字段的问题

数据库有个访问时间字段avg_time,类型为 Time ,根据需求计算某段时间内的平均访问时间,计算公式为:平均访问时间 = 访问总时间/访问次数

假设数据表tj_log中有如下数据:

avg_time uc_count tj_time
00:07:09 5 2018-01-03 08:00:09
00:05:14 2 2018-01-03 09:02:03
00:02:03 1 2018-01-03 18:03:29

查询语句如下

select sum(avg_time) avgTime, sum(uc_count) ucCount, date_formart(tj_time,"%y-%m-%d %H") tjTime from tj_log where tj_time> "2018-01-01" and tj_time="2018-01-02" group by tiTime;

预期我以为sum(avg_time)会计算时间的毫秒数之和,但是事实上它最终的结果却是:1426,与预期结果相差甚远。

于是我直接计算一条数据看看是什么结果:

select sum(avg_time) avgTime, sum(uc_count) ucCount, date_formart(tj_time,"%y-%m-%d %H") tjTime from tj_log where tj_time = "2018-01-03 08:00:09" group by tiTime;

发现 avgTime = 709,在看看表中的数据,原来sum(avg_time)只是简单的把字符串去掉特殊字符后的结果相加而已。

avg_time uc_count tj_time
00:07:09 5 2018-01-03 08:00:09

1426 = 709+514+203

所以,如果有时间统计的需求,最好把字段设计成long类型的,在程序中去转换一下就好了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,338评论 5 116
  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 8,317评论 0 33
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,120评论 2 89
  • 昨天是一个好日子,参加了朋友的开业典礼,也见证了一段爱情的开始。 恭贺朋友开业大吉,也算是我们初中几个朋友相聚的一...
    子耳子耳阅读 2,669评论 0 0
  • 创业必备知识 问题1:如何评估所投资事业是否可行? 指南1:大家都知道要打胜仗,一定要有战略或战术,但是许多人经营...
    梦屿屿阅读 890评论 0 0