0

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

建议?

4

2 回答 2

3

您可以使用小时方法:

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

您将需要一个函数来减去时间。如果您知道日期,则应使用带日期和时间的 between 函数。所以 MySQL 索引也将被使用。使用这种方法HOUR,它不会使用索引,如果查询很繁重,则需要很短的时间。

于 2013-09-22T09:50:23.473 回答
2
select * from visits where hour(in_time)>=23 or hour(in_time)<4
于 2013-09-22T09:57:17.403 回答