Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Сумма полей в формате TIME


Автор: igorold 18.6.2007, 14:22
кто-нибудь пробовал суммировать поля в формате TIME?
Например есть записи:
ID | WorkTimes
---+----------------
1  |  00:10:00
2  |  03:30:00
2  |  03:30:00
2  |  03:30:00

и по запросу:
Код

select ID, sum(WorkTimes) from Content group by ID;


выдается, естественно следующее:

ID |  sum(WorkTimes) 
---+-----------------------
1  | 1000
2  |  99000

а надо бы соответственно:
ID = 1  00:10:00
ID = 2  10:30:00

Какие есть мысли?

Автор: Glip 18.6.2007, 14:27
вот так с ходу: сначала переводить в секунды

Добавлено через 3 минуты и 46 секунд
Код

select ID, SEC_TO_TIME(sum(TIME_TO_SEC(WorkTimes))) from Content group by ID;

примерно так

Автор: igorold 18.6.2007, 14:42
Спасибо ... работает ...  smile 

Автор: igorold 11.11.2010, 14:34
А теперь интересная фишка - на разных серверах по разному выдается сумма времени:

Код

select TIME_FORMAT(SEC_TO_TIME(sum(TIME_TO_SEC(WorkTimes))), '%H:%i'), sum(TIME_TO_SEC(WorkTimes)) from ProblemsContent where DateWyp>='2010-01-01' and DateWyp<='2010-09-30' and Ispolnit=63 group by Ispolnit;


На одном сервере выдается правильно:
+----------------------------------------------------------------+-----------------------------+
| TIME_FORMAT(SEC_TO_TIME(sum(TIME_TO_SEC(WorkTimes))), '%H:%i') | sum(TIME_TO_SEC(WorkTimes)) |
+----------------------------------------------------------------+-----------------------------+
| 1623:50                                                        |                     5845800 |
+----------------------------------------------------------------+-----------------------------+

На другом все, что свыше некоторого значения, выдается 838:59 :
+----------------------------------------------------------------+-----------------------------+
| TIME_FORMAT(SEC_TO_TIME(sum(TIME_TO_SEC(WorkTimes))), '%H:%i') | sum(TIME_TO_SEC(WorkTimes)) |
+----------------------------------------------------------------+-----------------------------+
| 838:59                                                         |                     5845800 |
+----------------------------------------------------------------+-----------------------------+


Как это преодолеть?

Автор: Akina 11.11.2010, 16:00
Кто глючит - TIME_FORMAT или SEC_TO_TIME? из твоей цитаты непонятно...

Автор: igorold 11.11.2010, 16:13
Да, глючит SEC_TO_TIME ... спасибо за подсказку.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)