MySQL SUM时间(3),以毫秒为单位

时间:2015-06-03 06:05:50

标签: php mysql

我有mysql列时间(3),它存储了很好的时间值.. 但后来我想总结两次它转换成糟糕的时间格式;

我有两条记录:

b

所以实际上我应该得到:id | time ---|----------- 1 | 00:00:15.490 2 | 00:02:14.900

但我得到00:02:30.390

无论如何都要从Mysql得到正确的答案? 附:我使用PHP的功能,但不想使用它,除非有其他方法。 需要与MILLISECONDS相加时间

目前我正在使用查询230.390

2 个答案:

答案 0 :(得分:4)

如果你的表定义是这样的:

create table test (
  id integer,
  `time` time(3)   -- important to specify precision
);

你可以这样做:

select time(sum(`time`))
  from test;

注意:需要mysql 5.6 + 修改

实际上,time是使用错误的功能,因为它没有很多智能。

改为使用sec_to_time,即:

select sec_to_time(sum(`time`))
  from test;

time提取时间值,sec_to_time计算时间值 - 即time(70)返回NULL,因为没有有效时间有70秒, sec_to_time将为同一输入正确返回'00:01:10'的位置 修改

原来我还是错了。让我们尝试将毫秒分别处理到剩下的时间:

select sec_to_time(sum(time_to_sec(`time`)) + sum(microsecond(`time`))/1000000)
  from test;

答案 1 :(得分:2)

使用时间功能包裹输出的结果。所以:

time(sum(`time`))

其中时间是时间函数,时间是'是你的总和。