在SQL中排序时间(AM / PM)?

时间:2015-04-02 17:24:59

标签: 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

3 个答案:

答案 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')