MySQL - Как подвести итоги? - PullRequest
       2

MySQL - Как подвести итоги?

8 голосов
/ 25 августа 2009

У меня есть таблица, которая содержит значения даты и времени в этом формате:

START

1/13/2009 7:00:00 AM

END

1/13/2008 2:57:00 PM

Я использую функцию 'str to date', чтобы преобразовать их в формат даты и времени.

Как рассчитать разницу между ними? А затем суммируйте все так, чтобы оно отображалось в общем количестве часов (т. Е. Общее количество часов в неделю составляет 40:53).

Я пробовал функцию timediff, но результаты не суммируются.

Ответы [ 5 ]

43 голосов
/ 05 февраля 2010

Я думаю, что вы должны использовать этот код ... он работает:)

SELECT  
  SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) AS total_time  
FROM time_table;
6 голосов
/ 25 августа 2009

Проверьте функцию MySQL DateDiff

SELECT SUM(DATEDIFF(endtime, starttime)) 
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'

Вы также можете попробовать:

SELECT SUM(TIMEDIFF(endtime, starttime)) 
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'

Я не тестировал второй, но знаю, что первый должен работать.

4 голосов
/ 25 августа 2009

Попробуйте заглянуть в UNIX_TIMESTAMP и SEC_TO_TIME.

Вы бы суммировали разницу между временными метками, а затем использовали это значение (в миллисекундах), чтобы получить время:

SELECT SEC_TO_TIME(time_milis / 1000)
FROM (
   SELECT SUM(UNIX_TIMESTAMP(date1) - UNIX_TIMESTAMP(date2)) as time_milis
   FROM table
)
1 голос
/ 25 августа 2009

Использование TIMEDIFF().

SUM(TIMEDIFF(end, start))
1 голос
/ 25 августа 2009
SELECT some_grouping_column, SUM(TIMEDIFF(datecol1,datecol2)) as tot_time
FROM my_table
GROUP BY some_grouping_column;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...