根据两个日期时间字段从表中检索记录

时间:2016-08-11 03:58:26

标签: mysql sql

表格中有以下数据

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”之间。如何根据我的搜索条件获取第二行和第三行?

2 个答案:

答案 0 :(得分:1)

我很困惑为什么你期望结果集中的第二行。它是松散范围搜索(通过from_date还是by_date)?

你可以尝试这样的事情:

SELECT 
*
FROM your_table
WHERE from_date >= startDate
AND IF(to_date IS NULL, TRUE, to_date <= endDate);

注意:此处startDateendDate是您指定范围内的日期。

修改

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

回答

mysql-query-for-certain-date-range