выберите данные из диапазона двух дат

#sql #oracle

Вопрос:

Мне нужен запрос для выбора данных между двумя датами (p_startdt,p_enddt), который задается пользователем, если входные данные отсутствуют, то по умолчанию в качестве выходных данных будут указаны данные за последний год. Я не могу указать регистр для ввода null или без ввода

 where invc_dt between p_startdt and p_enddt
 

Ответ №1:

Используется NVL для обработки случая нулевого значения. В следующем примере дата начала будет указана как год назад, если значение p_startdt равно нулю, а значение p_enddt-как текущая дата, если значение p_enddt равно нулю:

 WHERE invc_dt 
  BETWEEN NVL(p_startdt,ADD_MONTHS(SYSDATE,-12)) AND 
          NVL(p_enddt,SYSDATE)
 

Примечание: Я предполагаю, что тип данных столбца invc_dt-ДАТА.