我在visualstudio中有一个表,我想在中为startdate创建一个输入字段,为enddate创建另一个输入字段,其中用户为两者选择一个日期,它将返回所有日期介于用户选择的开始日期和结束日期之间的记录。我还希望用户可以选择只搜索startdate,而将enddate保留为null,这样基本上只有2个表的输入字段(如果enddate为null,则为1)。
我现在有一个返回用户选择的日期,但仅在该日期:
(Date = @Date) AND (@Date BETWEEN @StartDate AND @EndDate)
@startdate是数据库中任何日期之前的日期@enddate是当前日期。这只是为了防止用户键入的日期不在数据库的日期范围内,并且返回错误。
我已经尝试将参数@startdate设置为@date,这样当用户选择一个日期时,它会将该日期设置为开始日期。我还有一个输入字段,让用户选择一个似乎有效的结束日期。我就是不能让start date参数像我想的那样工作。
以下是我尝试过的查询:
1
(Date = @Date) AND (@StartDate = @Date) AND (@Date BETWEEN @StartDate AND @EndDate)
2
(Date = @Date) AND (@Date BETWEEN @Date AND @EndDate)
如何修改此查询/参数,让用户在输入字段中选择开始日期和结束日期,并让表返回这些日期之间的所有记录?
1条答案
按热度按时间6ovsh4lw1#
(Date = @Date) AND ...
这将始终需要Date
等于@Date
是真的,不管其他的,除非OR ...
来了。假设两个字段填充
@StartDate
以及@EndDate
(我不清楚为什么会有第三个变量,@Date
)您可能正在搜索以下内容:如果
@EndDate IS NULL
(用户未在相应字段中输入任何内容)Date = @StartDate
必须是真的。否则Date BETWEEN @StartDate AND @EndDate
(如果@EndDate IS NULL
以防万一)。