2011-12-08 118 views
0

我有一個包含日期時間格式的字段start_date和end_date的表。搜索mysql包含單個日期的兩個日期字段

我需要做的是查找某個日期落在開始和結束日期之間的所有行。

例如,如果我有這行我的表我想在那裏開始結束日期的所有行會包括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

同時使用尼克和Angelo的答案最終的SQL我是 SELECT * FROM 'table' WHERE( '2011-12-08' BETWEEN'start_date' 和'end_date' ) OR( 日期('start_date')> = '2011-12-08' 和日期('end_date')<= '2011-12-08' ) 由於 – ianckc

+1

不看起來像一個很好的解決方案。如果你想結合刻痕和我的答案使用SELECT * FROM表WHERE'2011-12-08'BETWEEN日期(start_date)和日期(end_date) –

回答

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

感謝尼克。 這返回我第二行,但我也需要它包括第三行。 – ianckc

+0

不會返回start_date和end_date都在同一天的行。 –

2
SELECT * FROM table  
WHERE date(start_date) >= '2011-12-08' AND date(end_date) <= '2011-12-08' 
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