我有一个表,其中包含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
实现这一目标的最佳方式是什么?
答案 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