현재 WHERE
다음 매개 변수를 포함하는 이 절이 있습니다.
WHERE
Project ID=110
AND ((CAST(saa.Date AS DATE) >= '09/24/2014' AND CAST(saa.Date AS DATE) <= '09/24/2014') OR saa.Date IS NULL))
여기서 까다로운 부분은 saa.Date is NULL
섹션이 Null
모든 날짜의 모든 값 을 가져올 것이라는 것 입니다 (과도 함). Null
값에 대해 다음 날짜 범위 만 사용하고 싶습니다.
(
(CAST(sa.StartDateTime AS DATE) >= '09/24/2014' AND CAST(sa.StartDateTime AS DATE) <= '09/24/2014')
OR
(CAST(sa.EndDateTime AS DATE) >= '09/24/2014' AND CAST(sa.EndDateTime AS DATE) <= '09/24/2014')
)
그래서 CASE
IF saa.Date is NULL Then [Use Date Range Parameters above]와 같이 작동 하는 문을 어떻게 만들 수 있는지 알아 보려고합니다 .
@AHiggins의 답변을 기반으로하지만 성능과 가독성을 추가합니다.
-회피 cast
WHERE
ProjectID=110 AND
(
(
saa.Date between '09/24/2014 00:00:00.000' AND '09/24/2014 23:59:59.999'
) OR
(
saa.Date IS NULL AND
(
sa.StartDateTime between '09/24/2014 00:00:00.000' AND '09/24/2014 23:59:59.999'
) OR
(
sa.EndDateTime between '09/24/2014 00:00:00.000' AND '09/24/2014 23:59:59.999'
)
)
)
날짜 열에 인덱스가 있는지 확인하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다