1

我目前正在尝试编写一个查询,该查询将允许我查找每天两次之间发生的所有记录。例如,假设您有 5 条记录,每条记录都有自己唯一的时间戳,表示记录的创建时间。它们看起来像这样:

|--|------|-------------------|
|id|letter|    created_at     |
|--|------|-------------------|
|1 |a     |2013-10-30 10:00:00|
|2 |b     |2013-10-31 18:00:00|
|3 |c     |2013-11-01 14:00:00|
|4 |d     |2013-11-03 23:00:00|
|5 |e     |2013-11-04 05:00:00|
|--|------|-------------------|

我正在尝试编写一个查询,该查询将返回在 08:00:00 到 15:00:00 之间创建的所有记录。预期的结果是:

|--|------|-------------------|
|id|letter|    created_at     |
|--|------|-------------------|
|1 |a     |2013-10-30 10:00:00|
|3 |c     |2013-11-01 14:00:00|
|--|------|-------------------|

实现此结果的查询是什么样的?我熟悉如何使用 BETWEEN 来获取日期,但不熟悉如何专门关注时间。谢谢。

4

2 回答 2

4

或者,从您的日期时间字段中提取本机 TIME 值,并直接比较日期值:

SELECT *
FROM yourtable
WHERE TIME(created_at) BETWEEN '08:00:00' AND '15:00:00'

MySQL 在这里提供了一套非常全面的日期/时间操作函数:http: //dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

于 2013-11-04T17:55:49.743 回答
1

编辑忘记这是 MySQL 您可以使用EXTRACT函数将其拉出

SELECT id, letter, created_at
FROM table
WHERE EXTRACT(HOUR, created_at) BETWEEN 8 AND 15
于 2013-11-04T17:51:40.217 回答