我正在编写要在日期和日期之间使用小的日期时间过滤日期的过程。
从日期开始,在某些情况下可以为空,而在比较时,到日期也可以为零。
起始日期或截止日期可以为null时的过滤日期。
我尝试了以下查询,但它给了我错误。
SELECT RQ.int_REPS_QUES_DIFF_LEVEL,SUM(1) AS NoOFDificultyQuestion FROM
REPS_TEST_QUES_ASSIGNED RQA
INNER JOIN REPS_QUESTION RQ ON RQA.int_REPS_TEST_QUES_ASSG_QUESID=RQ.PK_REPS_QUES_ID
WHERE int_REPS_TEST_ID IN(
SELECT FK_TEST_ID FROM STUDENT_EXAM SE WHERE FK_USER_ID=56 AND SE.FK_REPS_BATCH_ID=466
and CASE
WHEN @FromDate!=NULL AND @ToDate!=NULL
THEN dat_STUD_EXAM_FINALEND >= @FromDate AND dat_STUD_EXAM_FINALEND <= @ToDate
WHEN @FromDate!=NULL AND @ToDate=NULL
THEN dat_STUD_EXAM_FINALEND >= @FromDate
WHEN @FromDate=NULL AND @ToDate!=NULL
THEN dat_STUD_EXAM_FINALEND <= @ToDate
END
)
strong textGROUP BY RQ.int_REPS_QUES_DIFF_LEVEL
我在错误
THEN dat_STUD_EXAM_FINALEND >= @FromDate AND dat_STUD_EXAM_FINALEND <= @ToDate
这行请告诉我我哪里错了
请您参考如下方法:
代替
WHEN @FromDate!=NULL AND @ToDate!=NULL
采用
WHEN @FromDate IS NOT NULL AND @ToDate IS NOT NULL
IS [NOT] NULL
如果某些内容是
NULL,则它在T-SQL中是未定义的,因此您无法与之进行比较。如果两个(或两个)值之一均为
=,则
!=和
false都将生成
NULL。




