MySQL: порядок по времени (MM: SS)? - PullRequest
4 голосов
/ 07 мая 2010

В настоящее время я храню различные метаданные о видео, и одним из этих битов данных является длина видео.

Так, если видео длится 10 минут 35 секунд, оно сохраняется в базе данных как «10:35».

Но я бы хотел получить список видеороликов по длине (самый длинный сначала, самый короткий последний).

Проблема, с которой я столкнулся, заключается в том, что если видео «2:56», оно будет длиннее, потому что число 2 больше, чем число 1 в.

Итак, как мне упорядочить данные на основе этого поля length, чтобы "10:35" распознавалось как более длинное, чем "2:56" (согласно моему примеру)?

Ответы [ 5 ]

8 голосов
/ 07 мая 2010

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

Вы можете найти специальные средства форматирования на веб-сайте MySQL .

Например:

%k -> Hour (0..23)

%l -> Hour (1..12)

2 голосов
/ 07 мая 2010

Самый простой выбор - хранить целое число (секунды) или число с плавающей точкой (минуты) вместо строки. Таким образом, 10:35 будет 635 в секундах или 10.583 в минутах. Вы можете сортировать по количеству очень легко. И вы можете вывести их в нужном вам формате с помощью простых математических и строковых функций.

0 голосов
/ 17 сентября 2011

У меня была такая же проблема - сохранение длины видео в базе данных.

Я решил это с помощью TIME mysql type - он решает все проблемы с упорядочиванием и преобразованием.

0 голосов
/ 07 мая 2010

Вы можете попытаться увидеть, если

ЗАКАЗАТЬ ПО ВРЕМЕНИ_TO_SEC (временное поле)

будет правильно его анализировать, однако это не оптимальный подход для сохранения времени в виде строк в базе данных, и я предлагаю вам сохранить их как ВРЕМЯ, если вы можете. Затем вы можете использовать стандартные функции форматирования, чтобы представить их, как вам нравится.

0 голосов
/ 07 мая 2010

Некоторые опции:

  1. Сохраните его как целое число, представляющее общее количество секунд. "10:35" => 635
  2. Сохраните его как объект отметки времени без компонента даты. "10:35" => MAKETIME(0, 10, 34)
  3. Сохраните его с начальными десятичными или пробелами. "2:25" => " 2:25"

Я бы предпочел первый вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...