我目前正在存储有关视频的各种元数据,其中一个数据位是视频的长度。
因此,如果视频长度为10分35秒,则会在数据库中保存为“10:35”。
但我想做的是按长度检索视频列表(最长的,最短的)。
我遇到的问题是,如果一个视频是“2:56”,那么它的出现时间最长,因为数字2超过数字1。
那么,我如何根据length
字段订购数据,以便“10:35”被识别为比“2:56”更长(根据我的例子)?
答案 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)
一些选项:
"10:35" => 635
"10:35" => MAKETIME(0, 10, 34)
"2:25" => " 2:25"
我的偏好是第一种选择。
答案 3 :(得分:0)
您可以尝试查看是否
ORDER BY TIME_TO_SEC(时间段)
会正确解析它,但它不是将数据存储在数据库中的最佳方法,我建议你将它们存储为TIME,如果你能够的话。然后,您可以使用标准格式设置功能根据需要显示它们。
答案 4 :(得分:0)
我遇到了同样的问题 - 将视频长度存储在数据库中。
我使用 TIME mysql类型解决了它 - 它解决了所有排序和转换问题。