Сумма времени между датами в MySQL - PullRequest
1 голос
/ 06 октября 2009

Моя таблица 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 ]

3 голосов
/ 06 октября 2009

Это не ЭТО сложно для навигации по документации MySQL.

Вам нужны функции 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

даст вам общее время (в секундах), потраченное на задачи сегодня. Посмотрите на DATE_SUB(), если вы собираетесь указать критерии для других диапазонов (например, в прошлом месяце и т. Д.) В MySQL вместо того, чтобы указывать их в качестве параметров для вашего запроса.

1 голос
/ 06 октября 2009
SELECT 'TODAY' Date, SUM(TIME_TO_SEC(TIME_DIFF(stop - start))) TimeSpent
FROM table1
WHERE start >= CURDATE()
  AND stop < CURDATE() + INTERVAL 1 DAY
...