2

视频时长格式应为 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
4

5 回答 5

0

只需删除TRIM和第一个LPAD

CONCAT(FLOOR(v.duration/60), ":", LPAD((v.duration%60), 2, 0)) AS duration
于 2013-08-06T08:43:39.047 回答
0

它从持续时间输出到mm:sshh:mm:ssd hh:mm:ss

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
于 2013-08-15T12:42:07.577 回答
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 请求此格式)

于 2013-08-06T02:12:51.753 回答
0

你可以在不修剪前导 0 的情况下做到这一点

 CONCAT(FLOOR(v.duration/60), ":", LPAD((v.duration%60), 2, 0)) as duration
于 2013-08-05T19:45:38.027 回答
0

你也可以使用内置的格式化函数来做到这一点:

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

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

于 2013-08-05T20:00:47.120 回答