2013-08-05 2 views
2

Формат видео длительности должен быть 0:00/00:00/000: 00 Эти функции работают отлично, за исключением случаев, когда видео составляет менее 60 секунд, оно отображается как: 00MySql, выдавая правильную продолжительность видео в течение менее 60 секунд

Если видео длится 12 секунд, я бы хотел, чтобы он показывал 0:12, но вместо этого он показывает: 12.

Примеры того, что мне бы хотелось: 0:55, 1:55, 11:55, 111: 55.

Примеры того, что я не хочу:: 55, 01:55, 011: 55

Вот строка из моего запроса на продолжительность:

trim(leading 0 from concat(lpad(floor(v.duration/60), 3, 0), ":", lpad((v.duration%60), 2, 0))) as duration 
+0

Почему вы обрезные ведущие нули, если вы * делаете * хотите, чтобы начальные нули? И какой результат вы ожидаете: '0: 00' или' 00: 00' или '000: 00'? – RandomSeed

+1

@RandomSeed Единственный формат, который я хотел бы иметь в качестве ведущих нулей, длится менее 60 секунд. Некоторые примеры того, что мне хотелось бы: 0:55, 1:55, 11:55, 111: 55. Примеры того, чего я не хочу:: 55, 01:55, 011: 55 и т. Д. Я пробовал много решений, прежде чем приходить сюда без везения. – Chris

ответ

0

После странное везение я получил эту работу сам, используя оператор IF, вот ответ для тех, кто нуждается в этом в будущем:

IF(v.duration/60 < 1, concat(lpad(floor(v.duration/60), 1, 0), ":", lpad((v.duration%60), 2, 0)), trim(leading 0 from concat(lpad(floor(v.duration/60), 3, 0), ":", lpad((v.duration%60), 2, 0)))) as duration 

Это будет производить форматы длительность видео от нескольких секунд до следующих :

0:12

34:56

121: 14 (Клиент просил этот формат по чч: мм: сс)

0

вы можете сделать это легко заменяется без зачистка ведущий 0

CONCAT(FLOOR(v.duration/60), ":", LPAD((v.duration%60), 2, 0)) as duration 
+0

Отображается 000: 12. – Chris

+0

Он решил проблему выше, но теперь она изменяет более длительные периоды до 003: 45, где они должны быть 3:45. Все ближе. :) – Chris

+0

Видео менее 60 секунд выглядят так: 000 – Chris

0

Вы также можете сделать это, используя встроенные функции форматирования:

select date_format(timestampadd(second, 12, '0000-01-01'), '%H:%i:%s') 

Задача (как всегда кажется MySQL) заключается в преобразовании разных типов данных времени/даты. Этот формат добавляет продолжительность (которая, кажется, в секундах) к ранней, ранней дате. Затем он печатает формат как hh: mm: ss. Вы можете настроить формат, чтобы показывать минуты, если хотите.

0

IT СДЕЛАТЬ ВЫХОДА ИЗ Продолжительность К мм: сс, чч: мм: сс и d чч: мм: сс

SELECT IF(duration<3600,date_format(DATE_ADD('2000-01-01 00:00:00',INTERVAL duration SECOND), '%i:%s'),IF(duration<86400,date_format(DATE_ADD('2000-01-01 00:00:00',INTERVAL duration SECOND), '%H:%i:%s'),CONCAT(floor(duration/86400),' ',date_format(DATE_ADD('2000-01-01 00:00:00',INTERVAL duration SECOND), '%H:%i:%s')))) AS ausgabe 
Смежные вопросы