搜索mysql包含单个日期的两个日期字段

时间:2011-12-08 11:24:10

标签: mysql

我有一个表,其中包含datetime格式的字段start_date和end_date。

我需要做的是找到某个日期落在开始日期和结束日期之间的所有行。

例如,如果我在表格中有这些行,我想得到所有开始日期的行将包括2011-12-08

start_date          end_date
2011-12-01 09:00:00 2011-12-04 17:00:00
2011-12-07 15:00:00 2011-12-09 16:00:00
2011-12-08 10:30:00 2011-12-08 14:00:00

实现这一目标的最佳方式是什么?

3 个答案:

答案 0 :(得分:2)

select * from table
where '2011-12-08' between date(start_date) and date(end_date)

答案 1 :(得分:2)

SELECT * FROM table     
WHERE date(start_date) >= '2011-12-08' AND date(end_date) <= '2011-12-08'

答案 2 :(得分:0)

小改进,因此可以使用现有索引。使用DATE(start_date)DATE(end_date)禁止使用任何索引。

SELECT * 
FROM tableX
WHERE start_date < '2011-12-08' + INTERVAL 1 DAY
  AND '2011-12-08' <= end_date