【问题标题】:Sum time between dates in MySQLMySQL中日期之间的总和时间
【发布时间】:2009-10-05 20:48:06
【问题描述】:

我有一个如下所示的 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 中的不同日期函数不太熟悉,而且我认为阅读和浏览它们的文档很困难..

【问题讨论】:

    标签: mysql datetime date


    【解决方案1】:

    浏览 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()

    【讨论】:

    • 对不起,我错过了“+ INVERVAL 1 DAY”在哪里。已编辑。
    【解决方案2】:
    SELECT 'TODAY' Date, SUM(TIME_TO_SEC(TIME_DIFF(stop - start))) TimeSpent
    FROM table1
    WHERE start >= CURDATE()
      AND stop < CURDATE() + INTERVAL 1 DAY
    

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      相关资源
      最近更新 更多