forum.bitel.ru
http://forum.bitel.ru/

вопрос про функцию sec_to_time в мускуле 5.х
http://forum.bitel.ru/viewtopic.php?f=1&t=5206
Страница 1 из 1

Автор:  sda0 [ 02 мар 2011, 03:34 ]
Заголовок сообщения:  вопрос про функцию sec_to_time в мускуле 5.х

понадобилось мне написать некий код под веб для сбора и отображения статистики, и столкнулся с траблой.
Код:
mysql> select sec_to_time(sum(session_time)) from log_session_3_201102;
+--------------------------------+
| sec_to_time(sum(session_time)) |
+--------------------------------+
| 838:59:59                      |
+--------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+-------------------------------------------+
| Level   | Code | Message                                   |
+---------+------+-------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '6519214' |
+---------+------+-------------------------------------------+
1 row in set (0.00 sec)


пробуем на 4.1.22 версии:
Код:
mysql> select sec_to_time(sum(6519214));                                     
+---------------------------+
| sec_to_time(sum(6519214)) |
+---------------------------+
| 1810:53:34                |
+---------------------------+
1 row in set (0.00 sec)


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


ну и собственно вопрос - как обойти это дурацкое ограничение?
или как можно сделать одним запросом, что бы была замена функции sec_to_time?

з.ы. читал форумы разные, в том числе по мускулю, народ недоволен, пишет девелоперам об этом "баге", а те игнорят. :facepalm:

Автор:  skn [ 02 мар 2011, 16:53 ]
Заголовок сообщения:  Re: вопрос про функцию sec_to_time в мускуле 5.х

может так:

Код:
select @a:=6519214, concat(floor(@a / 3600),":",floor((@a mod 3600)/60),":",@a mod 60)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/