2010-05-07 68 views
4

我目前正在存儲有關視頻的各種元數據,其中一個數據位是視頻的長度。MySQL:按時間排序(MM:SS)?

因此,如果一段視頻長度爲10分35秒,它會在數據庫中保存爲「10:35」。

但我想要做的是按長度(最長的第一個,最短的最後一個)檢索視頻列表。

我遇到的問題是,如果視頻爲「2:56」,它的未來是最長的,因爲2號比1號多。

所以,我怎麼能訂購數據基於該length字段,以便「10:35」被識別爲比「2:56」長(按照我的示例)?

回答

8

SELECT * FROM表 ORDER BY STR_TO_DATE(meta_time, '%L:%I')

您可以找到MySQL網站上的特定格式化。

例如:

%K - >小時(0..23) %L - >小時(1..12)

+0

str_to_date是要走的路,對不起我的錯誤。 – jishi 2010-05-07 13:11:28

+0

這是完美的。謝謝! – Shpigford 2010-05-07 13:19:43

2

最簡單的選擇是存儲整數(秒)或浮點數(分鐘)而不是字符串。所以10點35分將是635秒或10.583分鐘。您可以通過這些數字很容易地進行排序。你可以使用一些簡單的數學和字符串函數以你想要的格式輸出它們。

0

一些選項:

  1. 保存它作爲表示秒的總數的整數。 "10:35" => 635
  2. 將其另存爲沒有日期分量的時間戳對象。 "10:35" => MAKETIME(0, 10, 34)
  3. 用前導小數或空格保存。 "2:25" => " 2:25"

我喜歡第一個選項。

0

你可以試一試,看是否

ORDER BY TIME_TO_SEC(timefield)

會正確解析它,但它不是一種將時間作爲字符串存儲在數據庫中的最佳方法,並且我建議您將它們存儲爲TIME(如果可以)。然後,您可以使用標準格式化功能按照您的喜好呈現它們。

0

我有同樣的問題 - 將視頻長度存儲在數據庫中。

我解決了它通過使用時間 MySQL類型 - 它解決了所有訂購和轉換問題。