表格中有以下数据
from_date to_date
2015-05-12 2015-10-20
2015-10-21 2016-02-02
2016-02-03 NULL
其中to_date中的NULL值表示此记录在此之前有效。
我想要检索的记录介于“2015-10-30”和“2016-08-08”之间。如何根据我的搜索条件获取第二行和第三行?
答案 0 :(得分:1)
我很困惑为什么你期望结果集中的第二行。它是松散范围搜索(通过from_date还是by_date)?
你可以尝试这样的事情:
SELECT
*
FROM your_table
WHERE from_date >= startDate
AND IF(to_date IS NULL, TRUE, to_date <= endDate);
注意:此处startDate
和endDate
是您指定范围内的日期。
修改强>
SELECT
*
FROM your_table
WHERE
'2015-10-30' BETWEEN from_date AND COALESCE(to_date,CURDATE())
OR
'2016-08-08' BETWEEN from_date AND COALESCE(to_date,CURDATE())
答案 1 :(得分:0)
最后,我发现了我在寻找的东西。
select * from table where
end_date >= start_search && start_date <= end_search
以下链接中的更详细解答。由pacerier
回答