美文网首页
mysql sum()函数计算时间类型字段的问题

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

作者: DimonHo | 来源:发表于2018-11-21 21:47 被阅读71次

数据库有个访问时间字段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 sum()函数计算时间类型字段的问题

      本文链接:https://www.haomeiwen.com/subject/bxuhqqtx.html