每天两次SQL查询

时间:2013-11-04 17:41:53

标签: php sql time

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

|--|------|-------------------|
|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获取日期,但不熟悉如何专注于时间。感谢。

2 个答案:

答案 0 :(得分:3)

或者,从日期时间字段中提取本机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

答案 1 :(得分:1)

编辑忘了这是MySQL 您可以使用EXTRACT功能将其拉出来

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