MySQL:按时间排序(MM:SS)?

时间:2010-05-07 12:58:09

标签: mysql time

我目前正在存储有关视频的各种元数据,其中一个数据位是视频的长度。

因此,如果视频长度为10分35秒,则会在数据库中保存为“10:35”。

但我想做的是按长度检索视频列表(最长的,最短的)。

我遇到的问题是,如果一个视频是“2:56”,那么它的出现时间最长,因为数字2超过数字1。

那么,我如何根据length字段订购数据,以便“10:35”被识别为比“2:56”更长(根据我的例子)?

5 个答案:

答案 0 :(得分:8)

SELECT * FROM table ORDER BY str_to_date(meta_time,'%l:%i')

您可以在MySQL网站上找到特定的格式化程序。

例如:

%k - >小时(0..23) %l - >小时(1..12)

答案 1 :(得分:2)

最简单的选择是存储整数(秒)或浮点数(分钟)而不是字符串。因此10:35将是635秒或10.583分钟。你可以很容易地用数字排序。您可以使用一些简单的数学和字符串函数以您希望的格式输出它们。

答案 2 :(得分:0)

一些选项:

  1. 将其另存为表示总秒数的整数。 "10:35" => 635
  2. 将其另存为没有日期组件的时间戳对象。 "10:35" => MAKETIME(0, 10, 34)
  3. 使用前导小数或空格保存。 "2:25" => " 2:25"
  4. 我的偏好是第一种选择。

答案 3 :(得分:0)

您可以尝试查看是否

ORDER BY TIME_TO_SEC(时间段)

会正确解析它,但它不是将数据存储在数据库中的最佳方法,我建议你将它们存储为TIME,如果你能够的话。然后,您可以使用标准格式设置功能根据需要显示它们。

答案 4 :(得分:0)

我遇到了同样的问题 - 将视频长度存储在数据库中。

我使用 TIME mysql类型解决了它 - 它解决了所有排序和转换问题。