我正面臨按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
我正面臨按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