2015-04-02 88 views
1

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

我希望你將時間存儲爲TIME,DATETIME或TIMESTAMP,而不是VARCHAR或TEXT。 – cpburnz 2015-04-02 17:34:11

回答

1

好了,你還沒有告訴我們你的SELECT查詢,所以我走亂撞,但我會想你也許有這樣的事情:

SELECT login_time 
FROM my_table 

,你需要有這樣的:

SELECT login_time 
FROM my_table 
ORDER BY login_time 

也就是說,假設login_time的類型是time

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') 
1

如果login_time存儲爲一個時間,你可以做:

order by login_time 

如果login_time存儲爲一個字符串,你可以這樣做:

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