【发布时间】:2016-01-25 13:49:01
【问题描述】:
我一直在处理这个查询,它应该返回介于指定日期范围之间的数据,但事实并非如此。它返回是否落在范围之间的数据。
@DateTo @DateFrom 属于 DateTime 类型;
If(@fk_UserRoles_WebUsers_RoleID = 1) BEGIN
SELECT Cases.pk_Cases_CaseID,
Cases.CaseTitle,
Cases.CasePetitioner,
Cases.CaseNo,
Cases.CaseLetterBy,
Cases.CaseEntryDateTime,
CaseHearings.pk_CaseHearings_ID,
CaseHearings.Responder,
CaseHearings.Supervisor,
CaseHearings.Judge,
CaseHearings.IsOpeningDate,
CaseHearings.IsOpeningClosingDate,
Convert(varchar, CaseHearings.ClosingDate, 106) AS ClosingDate,
Convert(varchar, CaseHearings.ReOpeningDate, 106) AS ReOpeningDate,
Convert(varchar, CaseHearings.OpeningDate, 106) AS OpeningDate,
CaseHearings.IsConveyed,
CaseHearings.IsClosingDate,
Convert(varchar, CaseHearings.HearingDate, 106) AS HearingDate,
Cases.fk_ConcernedOffices_Cases_ConcernedOfficeID,
CaseHearings.CourtOrder,
CaseHearings.CaseRemarks,
ConcernedOffices.ConcernedOfficeName,
Courts.CourtName,
Convert(varchar,CaseHearings.GeneralDate, 106) AS GeneralDate,
CaseHearings.IsHearingDate
FROM Cases
LEFT JOIN CaseHearings ON Cases.pk_Cases_CaseID= CaseHearings.fk_Cases_CaseHearings_CaseID
AND ((@DateFrom =''
AND @DateTo ='')
OR (Cases.CaseEntryDateTime >= @DateFrom
AND Cases.CaseEntryDateTime < DATEADD(DAY, 1, @DateTo) ) )
LEFT JOIN ConcernedOffices ON ConcernedOffices.pk_ConcernedOffices_ID= Cases.fk_ConcernedOffices_Cases_ConcernedOfficeID
LEFT JOIN Courts ON Courts.pk_Courts_CourtID= CaseHearings.fk_Courts_CaseHearings_CourtID
INNER JOIN Web_Users ON Web_Users.UserID= Cases.fk_WebUsers_Cases_UserID
WHERE (@CaseNo =''
OR (@CaseNo!=''
AND Cases.CaseNo LIKE '%'+ @CaseNo +'%'))
AND Cases.CaseTitle LIKE '%'+@CaseTitle+'%' END
【问题讨论】:
-
@DateFrom ='' AND @DateTo =''- 应该使用 NULL 检查 -
@AllanS.Hansen 我的大脑有点停止工作,无法弄清楚问题所在,请您指正吗?
标签: sql sql-server tsql sql-server-2012