我有一张表(visits
),如下所示:
+--------------+-------------+------+-----+---------------------+----------------+
| 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点之间的所有记录。
建议?
答案 0 :(得分:3)
您可以使用hour方法:
SELECT * FROM visits WHERE HOUR(time_in) >= 11 AND HOUR(time_in) < 16
您需要一个功能来减去时间。如果您知道日期,则应使用日期和时间之间的函数。所以MySQL索引也将被使用。使用此方法HOUR
它将不会使用索引,如果查询很重,则需要很短的时间。
答案 1 :(得分:1)
select * from visits where hour(in_time)>=23 or hour(in_time)<4