Ответ 1
SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `timeSpent` ) ) ) AS timeSum
FROM YourTableName
Это сработало для меня. Надеюсь, это поможет.
Как подсчитать сумму времен моей колонии, называемую "timeSpent", имеющую этот формат: HH: mm в SQL? Я использую MySQL.
тип моего столбца - это время.
он имеет эту структуру
TimeFrom like 10:00:00 12:00:00 02:00:00 TimeUntil 08:00:00 09:15:00 01:15:00 Time spent total time 03:15:00
SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `timeSpent` ) ) ) AS timeSum
FROM YourTableName
Это сработало для меня. Надеюсь, это поможет.
Если тип данных столбца timeSpent
равен TIME
, вы можете использовать следующий запрос:
SELECT SUM(timeSpent)
FROM YourTableName -- replace YourTableName with the actual table name
Однако, если это не так, вам может потребоваться использовать трансляцию для преобразования в тип данных TIME
. Что-то вроде этого должно работать:
SELECT SUM(timeSpent - CAST('0:0:0' as TIME))
FROM YourTableName -- replace YourTableName with the actual table name
В MySQL вы бы сделали что-то подобное, чтобы получить временной интервал:
SELECT TIMEDIFF('08:00:00', '10:00:00');
Затем, чтобы добавить временные интервалы, вы должны:
SELECT ADDTIME('01:00:00', '01:30:00');
К сожалению, вы не храните даты или не используете 24-часовое время, поэтому эти вычисления оказались бы неправильными, так как ваш TimeUntil
на самом деле ниже вашего TimeFrom
.
Другим подходом было бы (при условии, что вы выбрали вышеупомянутую проблему), чтобы сохранить временные интервалы в секундах, используя TIMESTAMPDIFF()
:
UPDATE my_table SET time_spent=TIMESTAMPDIFF(start, end));
SELECT SEC_TO_TIME(SUM(time_spent)) FROM my_table;
100% рабочий код, чтобы получить сумму времени из базы данных MYSQL:
SELECT
SEC_TO_TIME( SUM(time_to_sec(`db`.`tablename`)))
As timeSum
FROM
`tablename`
Попробуйте и подтвердите. Спасибо.