Mysql SEC_TO_TIME без конечных секунд - найдено решение

У меня есть таблица Mysql, в которой хранятся даты в формате (ГГГГ-ММ-ДД ЧЧ: ММ: СС).

То, что я хочу, - это SUM часть HH: MM: SS для выбранных строк, так как я нашел в другом посте, я использую запрос

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(date))) FROM table

Этот запрос работает. Он суммирует часть, которую я хочу, и возвращает ее в формате HH: MM: SS.

Мой вопрос в том, возможно ли его вырезать секунды из результата.

Мне нужно сделать это в запросе, так как используемая мной CMS не позволяет мне использовать php для этой части.

Кстати, было бы замечательно, если бы я смог вернуть результат в дни, часы и минуты, если сумма будет больше, чем 24 часа.

Заранее спасибо

Для всех, кого это интересует, я нашел решение

SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(hours))),'%H:%i' ) FROM table
3 ответа

Попробуйте этот запрос, он рассчитает дни, часы и минуты -

SELECT
 SUM(TIME_TO_SEC(date) DIV 86400) days,
 SUM(EXTRACT(HOUR FROM (SEC_TO_TIME(TIME_TO_SEC(date) % 86400)))) hours,
 SUM(EXTRACT(MINUTE FROM (SEC_TO_TIME(TIME_TO_SEC(date) % 86400)))) minutes
FROM table

Затем используйте функцию CONCAT для форматирования этих результатов в одну строку.


Эффективное решение состоит в том, чтобы вырезать последние 3 символа:

SELECT SUBSTRING(SEC_TO_TIME(seconds), 1, 5);


SELECT SUBSTR(SEC_TO_TIME(1001),2,7);

выводит

0:16:41

licensed under cc by-sa 3.0 with attribution.