在SQL中排序时间(AM/PM)?
问题描述:
我正面临按AM/PM排序的问题。在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 login_time
FROM my_table
,你需要有这样的:
SELECT login_time
FROM my_table
ORDER BY login_time
也就是说,假设login_time的类型是time
。
答
您没有使用正确的数据类型保存日期时间数据,这会产生像现在一样的问题。您的数据保存为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')
答
如果login_time
存储为一个时间,你可以做:
order by login_time
如果login_time
存储为一个字符串,你可以这样做:
order by str_to_date(login_time, '%h:%i %p')
我希望你将时间存储为TIME,DATETIME或TIMESTAMP,而不是VARCHAR或TEXT。 – cpburnz 2015-04-02 17:34:11