我不确定为什么我的语法不起作用,但我正在查找字段Pend_Start_Dt大于我的变量PndStDt且Pend_End_Date小于我的变量PndEnDt的所有记录。如果记录没有当前结束日期,那么只要开始日期在用户输入的开始日期和结束日期之间,它也应该拉出。
所以,基本上,应该包括记录的2个场景:
“开始日期”字段大于或等于用户输入的开始日期和结束日期字段小于或等于用户输入的结束日期
或
“开始日期”字段位于用户输入的开始日期和结束日期之间,结束日期字段为空。
我希望这不会太混乱。
我尝试的语法如下,但我的存储过程不会编译。
Where a.Audit_Status = '3'
AND ((a.Pend_Start_DT >= TO_DATE (PndStDt, 'yyyy/mm/dd')) AND (a.Pend_End_DT <= (PndEnDT, 'yyyy/mm/dd'))
OR ((a.Pend_Start_DT between TO_DATE (PndStDt, 'yyyy/mm/dd') and TO_DATE (PndEnDT, 'yyyy/mm/dd') AND a.Pend_End_DT is null));
答案 0 :(得分:1)
缺少TO_DATE
并且parens不在正确的位置:
WHERE a.Audit_Status = '3'
AND
(
( a.Pend_Start_DT >= To_Date( PndStDt, 'yyyy/mm/dd' )
AND a.Pend_End_DT <= To_Date( PndEnDT, 'yyyy/mm/dd' )
)
OR
( a.Pend_Start_DT BETWEEN To_Date( PndStDt, 'yyyy/mm/dd' )
AND To_Date( PndEnDT, 'yyyy/mm/dd' )
AND a.Pend_End_DT IS NULL
)
)