Проблемы с выбором ДАТЫ между датами начала и окончания - PullRequest
0 голосов
/ 26 октября 2018

Таблицы имеют значения ниже для TRANSACTION_DATE

TRANSACTION_DATE in tables
    13-APR-17
    06-JUL-17
    17-JUL-17

ИЗ UI ниже значения передаются в даты начала и окончания:

V_TRANSACTION_DATE_START := 06-JUL-17
V_TRANSACTION_DATE_END : = 06-JUL-18

Ниже проверки условий для дат, и я предполагаю получитьтранзакции за последние 2 июля, но мой запрос никого не выбирает

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)))

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 26 октября 2018

Рассмотрим следующий блок кода:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...