Mysql 要在SQL中对时间(AM/PM)进行排序?

Mysql 要在SQL中对时间(AM/PM)进行排序?,mysql,sql,Mysql,Sql,我面临根据am/PM进行排序的问题 这是我的表格数据 login_time 1:30 PM 11:00 AM 10:00 AM 12:30 PM 10:00 PM 11:10 AM 12:20 PM 3:40 PM 2:20 PM 我希望结果如下: 10:00 AM 11:00 AM 11:10 AM 12:20 PM 12:30 PM 1:30 PM 2:20 PM 3:30 PM 好吧,您还没有向我们展示您的SELECT查询,所以我在胡乱猜测,但我认为您可能有这样的情况: SELECT

我面临根据am/PM进行排序的问题

这是我的表格数据

login_time
1:30 PM
11:00 AM
10:00 AM
12:30 PM
10:00 PM
11:10 AM
12:20 PM
3:40 PM
2:20 PM
我希望结果如下:

10:00 AM
11:00 AM
11:10 AM
12:20 PM
12:30 PM
1:30  PM
2:20 PM
3:30 PM

好吧,您还没有向我们展示您的SELECT查询,所以我在胡乱猜测,但我认为您可能有这样的情况:

SELECT login_time
FROM my_table
你需要有这个:

SELECT login_time
FROM my_table
ORDER BY login_time

当然,也就是说,假设登录时间的类型是适当的
时间

您没有使用适当的数据类型保存日期时间数据,这将产生类似您现在遇到的问题。您的数据保存为
varchar
,它们不是正确的日期或时间

但是,在您的情况下,您可以尝试以下操作,即首先将其转换为实时,然后获取秒数,然后按顺序进行

select * from table_name
order by time_to_sec(str_to_date(login_time,'%h:%i %p'))
如果没有
时间到秒
功能也应该工作

 order by str_to_date(login_time,'%h:%i %p')

如果
login\u time
存储为时间,您只需执行以下操作:

order by login_time

如果
login\u time
存储为字符串,则可以执行以下操作:

order by str_to_date(login_time, '%h:%i %p')

我希望您将时间存储为
TIME
DATETIME
TIMESTAMP
,而不是
VARCHAR
TEXT