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'
我在尝试编写按时间列排序的 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'