sql - 如何将可选日期或日期范围传递给存储过程
问题描述
有没有人有一种简单的方法来创建一个接受可选日期的 SQL Server 存储过程,或者没有日期,只有一个日期或两个日期(日期范围)?
我可以用一个日期做到这一点,如下所示:
WHERE (@PeriodFrom IS NULL OR Period = @PeriodFrom)
这适用于指定日期或根本没有日期(我使用
DECLARE @PeriodFor DATE = NULL
在存储过程的顶部。
如果我想查询怎么办
WHERE
Period BETWEEN @PeriodFrom AND @PeriodTo
我应该写一些CASE
声明吗?好像会变得乱七八糟。有什么建议么?
解决方案
如果没有样本数据和所需的输出,我猜你想要这样的东西。
WHERE
(
Period > @PeriodFrom
OR
@PeriodFrom IS NULL
)
AND
(
Period < @PeriodTo
OR
@PeriodTo IS NULL
)