visualstudio表中日期间的sql查询

jslywgbw  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(344)

我在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)

如何修改此查询/参数,让用户在输入字段中选择开始日期和结束日期,并让表返回这些日期之间的所有记录?

6ovsh4lw

6ovsh4lw1#

(Date = @Date) AND ... 这将始终需要 Date 等于 @Date 是真的,不管其他的,除非 OR ... 来了。
假设两个字段填充 @StartDate 以及 @EndDate (我不清楚为什么会有第三个变量, @Date )您可能正在搜索以下内容:

@EndDate IS NULL
AND Date = @StartDate
 OR Date BETWEEN @StartDate
                 AND @EndDate

如果 @EndDate IS NULL (用户未在相应字段中输入任何内容) Date = @StartDate 必须是真的。否则 Date BETWEEN @StartDate AND @EndDate (如果 @EndDate IS NULL 以防万一)。

相关问题