Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于两个datetime字段从表中检索记录_Mysql_Sql - Fatal编程技术网

Mysql 基于两个datetime字段从表中检索记录

Mysql 基于两个datetime字段从表中检索记录,mysql,sql,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”之间。如何根据我的搜索条件获取第二行和第三行?我很困惑,为什么您希望结果集中有第二行。这是一个松散的搜索范围(从开始日期或截止日期) 您可以尝试类似的方法: SELECT *

表中有以下数据

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

我很困惑,为什么您希望结果集中有第二行。这是一个松散的搜索范围(从开始日期或截止日期)

您可以尝试类似的方法:

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

最后,我找到了我要找的东西

select * from table where
end_date >= start_search && start_date <= end_search
从表中选择*,其中

结束日期>=开始搜索和开始日期
2015-10-21
不在
2015-10-30
2016-08-08
之间。2015-10-30是在2015-10-21和2016-02-02之间。也许你把自己搞糊涂了@sumanbhandarit那么
2016-08-08
呢?到日期-空值,这个记录直到今天都有效。自2015年10月30日起位于第二排之间。“2016-08-08”位于第三行,我需要能够检索这两行。我是否在@AlokPatel清除我自己?to_date-NULL表示,此记录有效期至今天。因为“2015-10-30”位于第二排之间。而“2016-08-08”位于第三行之间,我需要能够检索这两行,这是我见过的奇怪的日期范围搜索之一。没问题。只要告诉我“2015-10-30”和“2016-08-08”,这里有两个日期你想用它们来搜索。它总是固定为2吗?
select * from table where
end_date >= start_search && start_date <= end_search