MySQL中日期之间的总和时间

时间:2009-10-05 20:48:06

标签: mysql datetime date

我有一个看起来像这样的MySQL表。它基本上是任务的时间表。

  id  |  task  |  user  |          start        |         stop          |  running
------+--------+--------+-----------------------+-----------------------+-----------
  1   |   12   |   2    |  2009-10-01 10:05:00  |  2009-10-01 14:23:00  |  0
  1   |   13   |   4    |  2009-10-05 08:58:00  |  2009-10-05 12:16:00  |  0
  1   |   14   |   3    |  2009-10-05 20:30:00  |  2009-10-05 22:00:00  |  0

我想总结花费的时间:

1)今天 2)昨天 3)本周 4)上周 5)这个月 6)上个月

我不需要每个人的查询,但只是第一个让我开始。我不熟悉MySQL中的不同日期函数,我认为很难阅读和浏览他们的文档..

2 个答案:

答案 0 :(得分:3)

浏览MySQL文档并不是THAT difficult

您需要TIMEDIFF()TIME_TO_SEC个功能。

select SUM(TIME_TO_SEC(TIMEDIFF(stop, start))) from my_table
  where start >= CURRENT_DATE() and stop <= CURRENT_DATE() + INTERVAL 1 DAY

将为您提供今天花在任务上的总时间(以秒为单位)。如果您要在MySQL中指定其他范围的标准(例如上个月等)而不是将它们作为参数提供给您的查询,请查看DATE_SUB()

答案 1 :(得分:1)

SELECT 'TODAY' Date, SUM(TIME_TO_SEC(TIME_DIFF(stop - start))) TimeSpent
FROM table1
WHERE start >= CURDATE()
  AND stop < CURDATE() + INTERVAL 1 DAY