MySql,在60秒内显示正确的视频持续时间

时间:2013-08-05 19:43:08

标签: mysql

视频时长格式应为0:00 / 00:00 / 000:00 这些工作正常,除非视频少于60秒,它显示为:00

如果视频长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

5 个答案:

答案 0 :(得分:0)

你可以在不修剪前导0

的情况下完成
 CONCAT(FLOOR(v.duration/60), ":", LPAD((v.duration%60), 2, 0)) as duration

答案 1 :(得分:0)

您也可以使用内置格式化功能执行此操作:

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

挑战(一如MySQL似乎一样)是在不同的时间/日期数据类型之间进行转换。此格式将持续时间(似乎以秒为单位)添加到早期的早期日期。然后打印出格式为hh:mm:ss。如果您愿意,可以将格式调整为仅显示分钟数。

答案 2 :(得分: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(客户要求此格式为hh:mm:ss)

答案 3 :(得分:0)

Just remove TRIM和第一个LPAD

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

答案 4 :(得分:0)

IT输出从持续时间 mm:ss hh:mm:ss d hh:mm:ss < / strong>

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