访问2007查询以捕获包含2个日期的记录



我正在研究一个查询,以根据两个日期获得记录,开始和结束日期。

我需要获得的是跨越某个给定期间的记录,换句话说,开始日期可能在参数日期之前,但小于结束日期或在结束日期之后开始。

即。开始日期= 10月12日和结束日期10月31日。以及10月12日至10月31日之间的记录。

实际上我需要排除此期间的记录,但首先需要确保我的数据集正确。

我从MyTable中存储的简单数据集开始, start_dateend_date均作为日期/时间数据类型。

id start_date end_date
 1  9/29/2012 9/30/2012
 2  9/29/2012 10/2/2012
 3  9/29/2012 11/1/2012
 4  10/2/2012 11/1/2012
 5  11/1/2012 11/2/2012

运行下面的查询,并为range_startrange_end参数提供2012-10-012012-10-31,为我提供了此输出结果集。

id start_date end_date
 2  9/29/2012 10/2/2012
 3  9/29/2012 11/1/2012
 4  10/2/2012 11/1/2012

如果这与您想要的不相似,请编辑您的问题,向我们展示简短的输入数据示例集和您想要的输出。

另外,请注意我的start_dateend_date值的时间组件都是午夜。如果您的对手包括一天中的其他任何时间,则需要修改查询来处理它们。

这是我使用的查询中的SQL:

PARAMETERS range_start DateTime, range_end DateTime;
SELECT m.id, m.start_date, m.end_date
FROM MyTable AS m
WHERE
       m.start_date Between [range_start] And [range_end]
    OR m.end_date Between [range_start] And [range_end]
    OR (m.start_date<[range_start] AND m.end_date>[range_end]);

最新更新