LINUX.ORG.RU

MySQL ,тип TIME упираюсь в предел 838:59:59


0

1

Доброго времени суток, Трудяги,
Столкнулся с проблемой:

Величины, лежащие вне разрешенного интервала TIME, но во всем остальном представляющие собой допустимые значения, усекаются до соответствующей граничной точки данного интервала. Например, величины '-850:00:00' и '850:00:00' преобразуются соответственно в '-838:59:59' и '838:59:59'.

А я при подсчете времени упираюсь в этот предел:(

mysql> select `call_time`,sec_to_time(sum(time_to_sec(`call_time`))) from test where zone_name='Москва';
+-----------+--------------------------------------------+
| call_time | sec_to_time(sum(time_to_sec(`call_time`))) |
+-----------+--------------------------------------------+
| 00:01:00  | 838:59:59                                  |
+-----------+--------------------------------------------+
1 row in set, 1 warning (0.09 sec)

mysql>

Есть ли решение?

спасибо

★★★

Решение использовать секунды, а не TIME. Преобразовывать к требуемому формату отображения (HHH:MM:SS или D HH:MM:SS) на другом этапе, а не на уровне СУБД.

VinilNavigator
()
Ответ на: комментарий от VinilNavigator

У меня изначально время уже подсчитано в DBF файле. Далее я его конвертирую в SQL, где просто складываю.
Т.е. если я Вас правильно понял, мне сперва нужно не складывать, а перевести все время в целочисленные значения в секундах, а после сложения перевести все в D HH:MM:SS?
И т.к. мне важен именно формат HH:MM:SS, то я должен сам все это после разделить на секунды, минуты и часы?

papay ★★★
() автор топика
Ответ на: комментарий от papay

Может вот так вернет сумму по длительности в секундах?

select `call_time`, sum(time_to_sec(`call_time`)) from test where zone_name='Москва';
Ну а потом уже переводить в требуемый формат, не в MySQL уже, раз у него такие ограничения.

VinilNavigator
()
Ответ на: комментарий от VinilNavigator

СПАСИБО! Вы мне очень помогли!

papay ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.