[英]Finding all records within a date range in Oracle 12c
我不确定为什么我的语法不起作用,但是我正在寻找字段Pend_Start_Dt大于变量PndStDt且Pend_End_Date小于变量PndEnDt的所有记录。 如果记录没有当前的结束日期,那么只要开始日期在用户输入的开始日期和结束日期之间,记录也应拉该日期。
因此,基本上,在两种情况下都应包含记录:
“开始日期”字段大于或等于用户输入的开始日期, 而 “结束日期”字段小于或等于用户输入的结束日期
要么
“开始日期”字段位于用户输入的开始日期和结束日期之间, “结束日期”字段为null。
我希望不要太困惑。
我尝试过的语法如下,但是我的存储过程无法编译。
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));
缺少TO_DATE
,并且括号未放在正确的位置:
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
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.