【问题标题】:MySQL query for returning time sum over current resultsMySQL查询返回当前结果的时间总和
【发布时间】:2014-03-13 08:31:30
【问题描述】:

所以我的查询是这样的:

SELECT TIMEDIFF('24:00:00',(TIMEDIFF('22:00:00',TIME(end)))) AS time
  FROM sworkingtime
 WHERE user='magdalena' 
       AND type='work' 
       AND start BETWEEN '2014-03-01' 
                     AND '2014-03-28' 
       AND (HOUR(`end`) > 22 OR HOUR(`end`) < 4)
       AND completed=1

我的查询返回这个:

02:02:36
03:17:24
03:07:03
02:24:17
03:14:09

有没有办法修改这个查询,只返回这个字段的 SUM,所以只返回一个字段?

谢谢

【问题讨论】:

  • 你原来的表结构和数据是什么?

标签: mysql sql select time sum


【解决方案1】:

您可以使用TIME_TO_SEC() 将时间间隔转换为秒数,然后对其求和,然后使用SEC_TO_TIME() 将结果表示为时间值。

还可以重新排列TIMEDIFF() 表达式,只需将end 的每个值加上2 小时:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIME(end)) + 2*60*60))
FROM   sworkingtime
WHERE  user = 'magdalena'
   AND type = 'work'
   AND start BETWEEN '2014-03-01' AND '2014-03-28'
   AND (HOUR(end) > 22 OR HOUR(end) < 4)
   AND completed = 1

【讨论】:

  • 效果很好,这就是我所缺少的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
相关资源
最近更新 更多