2013-09-22 24 views
0

我有一個表(visits)之間是這樣的:MySQL的選擇所有記錄誰是時間戳秋天的「小時範圍」之內,像晚上11點至凌晨4點

+--------------+-------------+------+-----+---------------------+----------------+ 
| Field  | Type  | Null | Key | Default    | Extra   | 
+--------------+-------------+------+-----+---------------------+----------------+ 
| id   | int(11)  | NO | PRI | NULL    | auto_increment | 
| vis_id  | int(11)  | NO |  | NULL    |    | 
| unit   | int(11)  | NO |  | NULL    |    | 
| time_in  | timestamp | NO |  | CURRENT_TIMESTAMP |    | 
| time_out  | timestamp | NO |  | 0000-00-00 00:00:00 |    | 
| in_username | varchar(16) | NO |  | NULL    |    | 
| out_username | varchar(16) | NO |  | NULL    |    | 
+--------------+-------------+------+-----+---------------------+----------------+ 

我希望能夠選擇所有記錄誰的time_in價值在下午11點和凌晨4點之間。

對此提出建議?

回答

3

可以使用hour方法:

SELECT * FROM visits WHERE HOUR(time_in) >= 11 AND HOUR(time_in) < 16 

您將需要一個函數來了。減去時間。如果你知道你應該在日期和時間之間使用函數的日期。所以MySQL索引也會被使用。使用這種方法HOUR它不會使用索引,如果查詢會很重,則需要很短的時間。

+0

謝謝。雖然時間應該是23和4,對於晚上11點和上午4點 – jmd9qs

+0

我明白你對索引沒有被使用的意見,但是你是否意思是「你需要一個函數來減去時間」? – jmd9qs

+0

我的意思是在這種情況下'HOUR()'。 – Niels

1
select * from visits where hour(in_time)>=23 or hour(in_time)<4 
相關問題