我正在尝试编写一个查询,允许我查找每天两次之间发生的所有记录。例如,假设您有五条记录,每条记录都有自己唯一的时间戳,表示创建记录的时间。他们看起来像这样:
|--|------|-------------------|
|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获取日期,但不熟悉如何专注于时间。感谢。
答案 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)
SELECT id, letter, created_at
FROM table
WHERE EXTRACT(HOUR, created_at) BETWEEN 8 AND 15