MySQL选择所有时间戳落在“小时范围”内的记录,例如晚上11点到凌晨4点之间

时间:2013-09-22 09:48:27

标签: mysql sql select time range

我有一张表(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点之间的所有记录。

建议?

2 个答案:

答案 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