이 방법은 간단해야하지만 문제가 계속 발생한다고 생각합니다. 날짜 범위 사이에있는 테이블의 모든 데이터를 반환하기 만하면됩니다. 하지만 기간을 선택 사항으로 지정하고 싶습니다.SQL Server에서 선택적 날짜 매개 변수를 전달하는 방법
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는) 다음 전달 된 모든 행 < 반환되는 경우 종료 날짜
그리고 두 날짜가 전달되는 경우 물론, 그 날짜 inbetween 모든 행을 반환합니다.
내가 COALESCE와 (과) 잘못된 경로로 가고 있습니까?
Remus 감사합니다. 예 - 저는 실제로 *를 사용하지 않았지만 이것은 제 문제를 쉽게 설명하기위한 것입니다. – wotney