首页 > 解决方案 > 如何将可选日期或日期范围传递给存储过程

问题描述

有没有人有一种简单的方法来创建一个接受可选日期的 SQL Server 存储过程,或者没有日期,只有一个日期或两个日期(日期范围)?

我可以用一个日期做到这一点,如下所示:

WHERE (@PeriodFrom IS NULL OR Period = @PeriodFrom)

这适用于指定日期或根本没有日期(我使用

DECLARE @PeriodFor DATE = NULL

在存储过程的顶部。

如果我想查询怎么办

WHERE
    Period BETWEEN @PeriodFrom AND @PeriodTo

我应该写一些CASE声明吗?好像会变得乱七八糟。有什么建议么?

标签: sqlsql-servertsqlstored-procedures

解决方案


如果没有样本数据和所需的输出,我猜你想要这样的东西。

WHERE
(
    Period > @PeriodFrom 
    OR
    @PeriodFrom IS NULL
)
AND
(
    Period < @PeriodTo
    OR
    @PeriodTo IS NULL
)

推荐阅读