每天两次之间的SQL查询

每天两次之间的SQL查询,sql,time,Sql,Time,我目前正在尝试编写一个查询,允许我查找每天两次之间发生的所有记录。例如,假设您有五条记录,每条记录都有自己独特的时间戳,表示记录创建的时间。它们看起来像这样: |--|------|-------------------| |id|letter| created_at | |--|------|-------------------| |1 |a |2013-10-30 10:00:00| |2 |b |2013-10-31 18:00:00| |3 |c

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

|--|------|-------------------|
|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来获取日期,但不知道如何特别关注时间。谢谢。

编辑忘记了这是MySQL 您可以使用该功能将其拔出

SELECT id, letter, created_at
FROM table
WHERE EXTRACT(HOUR, created_at) BETWEEN 8 AND 15
我忘了这是MySQL 您可以使用该功能将其拔出

SELECT id, letter, created_at
FROM table
WHERE EXTRACT(HOUR, created_at) BETWEEN 8 AND 15

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

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

MySQL在这里提供了一套非常全面的日期/时间操作函数:

或者,从datetime字段中提取一个本机时间值,并直接比较日期值:

SELECT *
FROM yourtable
WHERE TIME(created_at) BETWEEN '08:00:00' AND '15:00:00'
MySQL在这里提供了一套非常全面的日期/时间操作功能: