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