在给定参数@startDate和@endDate的情况下,尝试查询何时在提供的时间范围内发生记录。我在下面有一个函数where子句,但我怀疑它可能更直接。
如果提供了结束日期,则不会从该日期之后选择记录。如果提供了开始日期,则不会从该日期之前选择记录。如果没有提供日期,则将选择所有记录。
SELECT *
FROM myTable
WHERE
(
(@startDate IS NULL AND ((@endDate IS NULL) OR (myTable.[recordDate] <= @endDate)))
OR
(@endDate IS NULL AND ((@startDate IS NULL) OR (myTable.[recordDate] >= @startDate)))
OR
(myTable.[recordDate] BETWEEN @startDate AND @endDate)
)
您可以使用ISNULL
以下功能来解决:
SELECT * FROM myTable
WHERE myTable.[recordDate] >= ISNULL(@startDate, '01/01/1900')
AND myTable.[recordDate] <= ISNULL(@endDate, getDate())
该查询将选择以下所有行:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句