2014-01-07 34 views
0

在我的示例表中,有一些方法可以找出有史以來最早的2次記錄是什麼?我並不是在最早的記錄行之後,但最早的記錄是基於H:i:s(而不是Y-m-d)。在這種情況下,它將是第3行第4行,因爲它分別具有4:07 AM和5:08 AM的時間,無論日期如何。MySQL:選擇有史以來記錄的最早2次(上午)

id  first_name  time 
1  joe    2011-10-01 10:01:00 
2  mary   2011-10-02 06:05:00 
3  sam    2011-10-03 04:07:00 
4  mel    2011-10-04 05:08:00 
5  bo    2011-10-05 13:10:00 
+0

你只想要午夜到中午的時間嗎? –

回答

0
select time from table order by time(time) asc limit 2 
+1

再次閱讀OP。 –

+1

我剛剛做了和編輯:S - 謝謝 – AdrianBR

2

你需要提取的日期/時間字段的時間成分(混淆的稱爲「時間」)。幸運的是,MySQL有此功能:您將需要運行一個DATE_FORMAT()

select time(`time`) 
from t 
order by time(`time`) 
limit 2; 
+0

不挑剔,但應該限制2 – user2366842

+0

@ user2366842。 。 。謝謝。 –

1

其他的答案看一看整個DATETIME列,如果你想的最早時間(秒H::M):

SELECT time FROM table ORDER BY DATE_FORMAT(time, '%H:%m:%s') ASC LIMIT 2; 

您還可以使用TIME()代替:ORDER BY TIME(time) ASC。如果你想選擇時間(沒有PHP功能),你可以使用SELECT TIME(time) as time

0

ORDER BY TIME(time)的答案將滿足您的要求,如果您的要求不需要擴展,這很好。

我的MySQL explain是我必須對此查詢的所有行進行排序。如果效率是您關心的問題,您必須將您的時間行分爲兩行,日期只有時間。如果只有索引,則不需要查看所有行。