MySQL: Order by-Zeit (MM:SS)?
Ich bin derzeit die Speicherung der verschiedenen Metadaten über videos und eines dieser bits der Daten ist die Länge des Videos.
Also wenn ein video 10 Minuten 35 Sekunden lang ist, es ist gespeichert als "10:35" in der Datenbank.
Aber das, was ich möchte zu tun ist, rufen Sie eine Liste der videos, nach Länge (längste zuerst, kürzeste letzten).
Das problem das ich habe ist, dass wenn ein video "2:56", es kommt bis zu den längsten, weil die Zahl 2 ist mehr als die Nummer 1.
So, wie ich kann, um Daten auf der Grundlage, dass length
Feld, so dass "10:35" erkannt wird, die länger als "2:56" (wie in meinem Beispiel)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
SELECT * FROM table ORDER BY str_to_date(meta_time,'%l:%i')
Finden Sie die speziellen Formatierer auf die MySQL Website.
Beispiel:
%k -> Hour (0..23)
%l -> Hour (1..12)
Die einfachste Wahl ist, zum speichern einer Ganzzahl (Sekunden) oder ein float (Minuten) anstelle eines string. So 10:35 wäre 635 in Sekunden oder 10.583 in Minuten. Sie können Sortieren, indem diese numerisch sehr leicht. Und Sie können die Ausgabe in dem format, das Sie möchten, mit einige einfache mathematische und string-Funktionen.
Einige Optionen:
"10:35" => 635
"10:35" => MAKETIME(0, 10, 34)
"2:25" => " 2:25"
Meine Präferenz wäre für die erste option.
Könnten Sie versuchen, um zu sehen, ob
ORDER BY TIME_TO_SEC(Zeit)würden analysiert richtig, aber es ist nicht eine optimale Ansatz zum speichern von Uhrzeit als String in der Datenbank, und ich schlage vor, Sie speichern Sie Sie als ZEIT, wenn Sie in der Lage sind. Dann können Sie die standard-Formatierung verwenden Funktionen zu präsentieren, wie Sie möchten.
Ich hatte das gleiche problem - speichern Sie videos Länge in der Datenbank.
Ich löste es, indem ZEIT mysql geben - es löst alle Bestell-und converting-Probleme.