Рассмотрим следующий блок кода:
declare
V_TRANSACTION_DATE_START varchar2(80) := '06-JUL-17';
V_TRANSACTION_DATE_END varchar2(80) := '06-JUL-18';
TRANSACTION_DATE varchar2(80) := '17-JUL-17';
begin
if NVL(TRANSACTION_DATE,TRUNC(SYSDATE))
BETWEEN NVL(V_TRANSACTION_DATE_START,NVL(TRANSACTION_DATE,TRUNC(SYSDATE)))
AND NVL(V_TRANSACTION_DATE_END,NVL(TRANSACTION_DATE,TRUNC(SYSDATE))) then
dbms_output.put_line('Char collation returns '||
TO_CHAR(TO_DATE(TRANSACTION_DATE,'DD-MON-YY'),'DD-MM-YYYY'));
end if;
if NVL(TO_DATE(TRANSACTION_DATE,'DD-MON-YY'),TRUNC(SYSDATE))
BETWEEN NVL(TO_DATE(V_TRANSACTION_DATE_START,'DD-MON-YY'),NVL(TRANSACTION_DATE,TRUNC(SYSDATE)))
AND NVL(TO_DATE(V_TRANSACTION_DATE_END ,'DD-MON-YY'),NVL(TRANSACTION_DATE,TRUNC(SYSDATE))) then
dbms_output.put_line('Date collation returns '||
TO_CHAR(TO_DATE(TRANSACTION_DATE,'DD-MON-YY'),'DD-MM-YYYY'));
end if;
end;
возвращает только результат второго оператора:
Date collation returns 17-07-2017
как результат.
Следовательно, вам необходимо выполнить преобразование даты в правильном формате (здесь * DD-MON-YY
)
RextesterDemo