我想从间隔与查询中指定的间隔相交的表中提取行。假设我有一个简单的ID, DATE_START,DATE_END表和两个查询参数,P_DATE_START并且P_DATE_END,表达查询的最简单方法是什么,以便找到[DATE_START,DATE_END]具有至少一个公共元素的所有行[P_DATE_START, P_DATE_END]?
ID, DATE_START,DATE_END
P_DATE_START
P_DATE_END
[DATE_START,DATE_END]
[P_DATE_START, P_DATE_END]
更新:
为了使预期结果更加清晰,请在下面找到输入值和预期结果的列表。列是 DATE_START, DATE_END, P_DATE_START, P_DATE_END, MATCH。
DATE_START, DATE_END, P_DATE_START, P_DATE_END, MATCH
16, 17, 15, 18, YES 15, 18, 16, 17, YES 15, 17, 16, 18, YES 16, 18, 15, 17, YES 16, 17, 18, 19, NO 18, 19, 16, 17, NO
更简单:
SELECT id, date_start, date_end FROM thetable WHERE date_start <= p_date_end AND date_end >= p_date_start