SQL时间栏没有升序排列

SQL time column does not sort in ascending order

我在尝试编写按时间列排序的 SQL 语句时遇到了一些麻烦,该语句采用 varchar 格式,按升序排列。这是我的 SQL 声明:

SELECT mrtpopTime, mrtpopAmt
FROM tm_mrtpop
WHERE mrtpopName = ''
ORDER BY mrtpopTime

我得到了这些结果:

从图片上可以看出,是一个字符一个字符地排序的。有没有办法像这样排序:

0:00, 1:00, 2:00, 3:00 all the way to 23:00

有什么想法吗?提前致谢。

将 varchar 时间列转换为 time(或虚拟日期加时间)并按此排序:

SELECT mrtpopTime, mrtpopAmt
FROM tm_mrtpop
WHERE mrtpopName = ''
ORDER BY STR_TO_DATE(mrtpopTime, '%H:%i')

由于 mrtpopTime 在 varchar 中,因此不会排序。因此将其转换为 float 并按

排序
SELECT  mrtpopTime, mrtpopAmt
FROM tm_mrtpop
WHERE mrtpopName = ''
ORDER BY 'cast(mrtpopTime as float) time'