Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL时间列不按升序排序_Mysql_Sql_Time_Sql Order By - Fatal编程技术网

Mysql SQL时间列不按升序排序

Mysql SQL时间列不按升序排序,mysql,sql,time,sql-order-by,Mysql,Sql,Time,Sql Order By,我在尝试编写一个按时间列排序的SQLstatement时遇到了一些问题,该列是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 有什么想法吗?提前谢谢 将v

我在尝试编写一个按时间列排序的SQLstatement时遇到了一些问题,该列是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')

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

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

因为mrtpopTime在varchar中,所以它不会排序。因此,将其抛入浮动并按顺序排列

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

因为mrtpopTime在varchar中,所以它不会排序。因此,将其抛入浮动并按顺序排列

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