MySQL选择同时查询日期范围

时间:2013-09-29 08:20:14

标签: mysql sql date time timestamp

EventID --- EventTime(TIMESTAMP

1   2013-09-29 12:00:00.0
2   2013-09-29 12:01:00.0
3   2013-09-29 12:03:00.0
4   2013-09-28 1:03:00.0
5   2013-09-27 23:03:00.0
6   2013-09-26 17:03:00.0
7   2013-09-25 12:01:00.0
8   2013-09-24 20:03:00.0
9   2013-09-23 5:03:00.0
10  2013-09-23 12:01:00.0

我想在MySQL中检索满足给定日期范围且同一时间的行。

因此,如果我查询以“2013-09- 26 12:01 ”作为EventTime值检索+/- 5天的行,我希望得到第2行,第7行和第10行。

请帮助框架SQL语句。谢谢!

3 个答案:

答案 0 :(得分:1)

WHERE EventTime >= '2013-09-26 12:01' - INTERVAL 5 DAY
  AND EventTime <= '2013-09-26 12:01' + INTERVAL 5 DAY
  AND TIME(EventTime) = TIME('2013-09-26 12:01')

答案 1 :(得分:0)

你可以使用mysql HOUR MINUTE 函数

https://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

答案 2 :(得分:0)

这正是您尝试实现的目标:

SELECT * FROM events WHERE 
HOUR(EventTime)=HOUR('2013-09-26 12:01') AND 
MINUTE(EventTime)=MINUTE('2013-09-26 12:01') AND 
EventTime BETWEEN 
   DATE_SUB('2013-09-26 12:01', INTERVAL 5 day) AND 
   DATE_SUB('2013-09-26 12:01', INTERVAL -5 day)