2013-08-05 90 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(客戶端請求的這個格式在HH:MM:SS)

0

你可以做到這一點wihout修剪前導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

Just removeTRIM和第一個LPAD

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

使其輸出從時間 TO 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