按数字排序包含时间的varchar字段

时间:2018-07-09 09:15:48

标签: mysql sql sorting date datetime

我正在使用varchar字段来存储时间符号(格式:00:00)。 我如何在该字段上对结果进行排序,例如08:00在10:00之前? 感谢您的支持。

3 个答案:

答案 0 :(得分:1)

理想情况下,您应该将数据存储为TIME,但始终可以按需CAST date time literals

ORDER BY CAST(thetime AS TIME)

答案 1 :(得分:0)

ORDER BY子句中使用TIME_FORMAT函数

假设您的列名为thetime,并且始终以24小时格式hours:minutes(23:43)

表示。
ORDER BY TIME_FORMAT(thetime, '%H:%i');  

答案 2 :(得分:0)

您没有问题。 '08:00'小于'10:00'

您没有问题,因为您将字符串零填充了。此功能最多可使用'99:59'。如果您需要三位数的小时数,则需要为该小时数另外存储0'008:00'' and“ 010:00”`。

当然,您也可以使用TIME数据类型。通常这是有道理的,但是它的范围受到限制,并且会存储不到一分钟的时间(因此在某些情况下,它可能无法完全满足您的需求)。