我面临按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
答案 0 :(得分:1)
好吧,你没有向我们展示你的SELECT查询所以我正在猜测,但我认为你可能有这样的事情:
SELECT login_time
FROM my_table
你需要这个:
SELECT login_time
FROM my_table
ORDER BY login_time
当然,假设login_time属于适当类型time
。
答案 1 :(得分:1)
如果将login_time
存储为时间,您可以执行以下操作:
order by login_time
如果login_time
存储为字符串,您可以执行以下操作:
order by str_to_date(login_time, '%h:%i %p')
答案 2 :(得分:0)
您没有使用正确的数据类型保存日期时间数据,这将产生您现在遇到的问题。您的数据保存为varchar
,并且它们不是正确的日期或时间。
但是在您的情况下,您可以尝试如下,即首先将其转换为实时,然后获取秒,然后按顺序排序。
select * from table_name
order by time_to_sec(str_to_date(login_time,'%h:%i %p'))
没有time_to_sec
功能也应该有用。
order by str_to_date(login_time,'%h:%i %p')