2016-10-28 7 views
1
@TimeCurr Char(1) 

SELECT RecordDate, a, b,c 
FROM tbl_xyz 
WHERE 1 = 1 
AND 

경우 @TimeCurr = 'Y'그런 RecordDate =에 GetDate()SQL - 파람 널 다음의 기준을 생략하면 WHERE 절

경우 @TimeCurr = 'N'다음 RecordDate < =에 GetDate()

if @TimeCurr = Null 그런 다음 critera를 모두 생략하십시오. 우리는 어떻게 이것을 할 수 있습니까? 이 같은

+1

'(ISNULL OR CASE ... END)' –

+0

어떤 DBMS를 사용하고 있습니까? –

답변

1

뭔가 : GETDATE()의 사용을 기반으로

SELECT RecordDate, a, b,c 
FROM tbl_xyz 
WHERE 1 = 1 AND 
     ((@TimeCurr = 'Y' AND RecordDate = CAST(GetDate() as date)) OR 
     (@TimeCurr = 'N' AND RecordDate <= GetDate()) OR 
     @TimeCurr IS NULL 
    ); 

, 난 당신이 SQL Server를 사용하는 것으로 추측하고있다. 그렇다면 함수 GETDATE()은 날짜/시간 값을 반환합니다. 일반적으로 =을 사용하고 싶지는 않습니다. 그래서 RecordDate이 실제로 시간 구성 요소가없는 날짜라고 가정하고 날짜로 변환하는 것입니다.