2017-02-12 5 views
1

Вопрос:Сумма DateTime в MySQL строк

Можно сгруппировать все строки в MySQL и суммировать часы?

Starttime - type:datetime, Stoptime - type:datetime 

данных

Starttime, stoptime 
2016-10-25 09:00:00, 2016-10-29 17:00:00 
2016-11-26 09:00:00, 2016-11-26 17:00:00 
2016-11-30 09:00:00, 2016-11-30 17:00:00 
2017-01-28 09:00:00, 2017-01-28 17:45:00 

Код ниже суммирует все часы между 2016-10-25 и 2017-01-28. Мне нужно, чтобы он суммировал все время на каждой строке, а затем все строки вместе. Можно ли суммировать это в MySQl или я привязан к PHP?

SELECT 
MIN(starttime), 
MAX(stoptime), 
SUM(TIME_TO_SEC(TIMEDIFF(stoptime, starttime))/3600) AS total_hours 
FROM mytable WHERE id = 1219 
+0

кажется правильным .. в чем проблема? – scaisEdge

+0

Проблема в том, что я хочу (если возможно) суммировать все часы в MySQL. Сначала строка за строкой, а затем все строки вместе. Я могу сделать это, используя MySQL и PHP. Но мне интересно, можно ли сделать это более эффективно, используя только MySQL. – Per76

+0

Какова схема таблицы 'mytable'? Если вам нужны общие часы для всех строк, почему у вас есть предложение 'where id = 1219'? Если 'id = 1219' просто соответствует одной строке, то в чем смысл' min' и 'max' всего 1 строка/значение столбца? – Paras

ответ

1

Суммируя все различия, вам не нужно min(starttime) или max(stoptime), просто использовать sum из timestampdiff, например

select sum(timestampdiff(hour, starttime, stoptime)) 
from mytable 

Если вы хотите дробных часов, держать time_to_sec(...)/3600 как в вашем вопросе

select sum(time_to_sec(timediff(stoptime, starttime))/3600) 
from mytable 

Смотри также sqlfiddle

Смежные вопросы