从开始日期和结束日期开始,我如何查找当前“活动”的记录?
问题描述:
我的主数据库表在行上有一个开始日期和一个结束日期,用于表示何时开始或结束某个试用版。从开始日期和结束日期开始,我如何查找当前“活动”的记录?
因此,如果试验已经开始并在被查询的时间段之前结束,那么它将被排除。如果试验已经开始并且在之后被查询,那么它也应该被排除。
但是,如果试验开始或结束于时间段,或者开始于时间段结束之后并结束,则应将其包括在内。
我一直在挠我的头,我无法解决这个问题。
这是我现有的查询的工作原理,但似乎包括在查询时间段之后开始和结束的试验。
SELECT Count(Trials.Active) AS CountOfActiveTrials
FROM Trials
WHERE (((((Trials.DateStudyOpened)>[Forms]![Startup]![txtReportStartDate] And (Trials.DateStudyOpened)<[Forms]![Startup]![txtReportEndDate]) Or (Trials.DateStudyOpened)<[Forms]![Startup]![txtReportStartDate]) And Not (Trials.DateStudyOpened)>[Forms]![Startup]![txtReportEndDate]) AND (((Trials.DateStudyClosed)>[Forms]![Startup]![txtReportStartDate] And ((Trials.DateStudyClosed)<[Forms]![Startup]![txtReportEndDate]) Or (Trials.DateStudyClosed)>[Forms]![Startup]![txtReportEndDate]) Or (Trials.DateStudyClosed) Is Null));
答
这清盘是如何做到这一点,它是如此简单:
SELECT Count(Trials.Active) AS CountOfActiveTrials
FROM Trials
WHERE (((Trials.DateStudyOpened)<=[Forms]![Startup]![txtReportEndDate]) AND ((Trials.DateStudyClosed)>=[Forms]![Startup]![txtReportStartDate]));