簡體   English   中英

在Oracle 12c中查找日期范圍內的所有記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM