Перевод секунд в формат Дни.Часы:Минуты:Секунды


Если в MySQL нужно перевести количество секунд в дни часы минуты и секунды, то для этого идеально подойдет функция sec_to_time:

select sec_to_time(18400000) dt from dual;

dt
--
212.23:06:40

Но иногда бывают случаи, когда функцию нельзя использовать из-за ограничения самой функции (Returns the seconds argument, converted to hours, minutes, and seconds, as a TIME value. The range of the result is constrained to that of the TIME data type. A warning occurs if the argument corresponds to a value outside that range). В этом случае, можно получить подобный результат другим способом:

select concat(
cast(floor(18400000/60/60/24) as char(3)),'.',
cast(floor(mod(18400000/60/60/24,1)*24) as char(2)),':',
cast(floor(mod(mod(18400000/60/60/24,1)*24,1)*60) as char(2)),':',
cast(round(mod(mod(mod(18400000/60/60/24,1)*24,1)*60,1)*60) as char(2)))
from dual;

dt
--
212.23:6:40

Конечно запрос довольно громоздкий, но если его представить в виде функции, тогда это упростить задачу:

CREATE FUNCTION sectotime(val INT)
RETURNS char(15)
DETERMINISTIC
begin
declare DD char(3);
declare HH, MI, SS char(2);
declare res char(15);
set DD = cast(floor(val/60/60/24) as char(3));
set HH = cast(floor(mod(val/60/60/24,1)*24) as char(2));
set MI = cast(floor(mod(mod(val/60/60/24,1)*24,1)*60) as char(2));
set SS = cast(round(mod(mod(mod(val/60/60/24,1)*24,1)*60,1)*60) as char(2));
set res = concat(DD,'.',HH,':',MI,':',SS);
return res;
end;

select sectotime(18400000) dt from dual;

dt
--
212.23:6:40

 

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s