我有StartDate
&表中的EndDate
列,它们可以为空,我将两个参数传递给存储过程来过滤该表,参数可以为空值,并且列也可以为空,如我所述。
在这种情况下如何使用条件WHERE
子句编写SQL语句以使日期大于或等于StartDate
且日期小于或等于EndDate
?< / p>
这是我到目前为止所做的:
SELECT StartDate, EndDate FROM Table1
WHERE (StartDate >= Convert(DateTime, @dtFrom) OR StartDate IS NOT NULL ) AND
(EndDate <= Convert(DateTime, @dtTo) OR EndDate IS NOT NULL )
答案 0 :(得分:1)
如果null参数表示'不对该参数进行过滤',列中的空值表示正/负无穷大,则这是您可能想要使用的查询:
select StartDate, EndDate
from Table1
where
(@dtFrom is null or StartDate is null or StartDate >= Convert(DateTime, @dtFrom)) and
(@dtTo is null or EndDate is null or EndDate <= Convert(DateTime, @dtTo))