我认为这应该很简单,但我一直遇到问题。我只想从位于日期范围之间的表中返回所有数据。但我希望日期范围是可选的。
ALTER PROCEDURE [dbo].[sp_ExistingPlacements_Get]
@DateFrom DATE = NULL,
@DateTo DATE = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM tblExistingPlacements
WHERE
CreatedDT > COALESCE(NULLIF(@DateFrom, ''), @DateFrom)
AND
CreatedDT < COALESCE(NULLIF(@DateTo, GETDATE()), @DateTo)
END
因此,如果没有传入日期,我们将返回整个表。
如果仅通过了开始日期 (DateFrom),我们将返回行 > 开始日期以及截至当前日期的所有内容。
如果仅通过了结束日期 (DateTo),则返回所有行 < 结束日期
当然,如果两个日期都已通过,则返回这些日期之间的所有行。
我是否与 COALESCE 走错了路?