使用MySQL在几分钟内完成日期

时间:2011-04-05 00:49:38

标签: mysql

我有一个任务表,当我开始任务tStart时以及当我结束任务tEnd时我进入。我想知道在一段时间内我花了多少分钟的工作时间。那么这个查询有什么问题吗?

SELECT SUM(MINUTE(DATEDIFF(tEnd, tStart)))
FROM tasks
WHERE tStart >= '2011-04-04'
    AND tEnd <= '2011-04-04'

1 个答案:

答案 0 :(得分:7)

你的病情

WHERE tStart >= '2011-04-04' AND tEnd <= '2011-04-04'

非常确保只留下的记录是

tStart = tEnd = '2011-04-04'

毋庸置疑,DATEDIFF之间的DATEDIFF为0,总和为0.实际上,DATEDIFF 忽略时间部分,因此您需要使用TIMEDIFF + TIME_TO_SEC

SELECT SUM(TIME_TO_SEC(TIMEDIFF(tEnd, tStart))/60)
FROM tasks
WHERE tStart >= '2011-04-04' AND tEnd <= adddate('2011-04-04', interval 1 day)

注意WHERE子句的更改。如果你想说,今天任何时间开始并且今天任何时候结束,那么范围应该是(已经假设开始&lt;结束)

WHERE tStart >= '2011-04-04'
  AND tEnd < adddate('2011-04-04', interval 1 day)

您可以将其硬编码到2011-04-05,但使用<(小于)并在最后限制中添加一天就是我在这里展示的内容。