Вот как я понял вопрос.
На основе таблицы Скотта EMP
, содержащей столбец hiredate
, я выберу значения в определенном диапазоне дат.
SQL> alter session set nls_date_format = 'dd.mm.yyyy'
2 /
Session altered.
SQL> select ename, job, hiredate from emp order by hiredate;
ENAME JOB HIREDATE
---------- --------- ----------
SMITH CLERK 17.12.1980
ALLEN SALESMAN 20.02.1981
WARD SALESMAN 22.02.1981
JONES MANAGER 02.04.1981
BLAKE MANAGER 01.05.1981 --> from here ...
CLARK MANAGER 09.06.1981
TURNER SALESMAN 08.09.1981
MARTIN SALESMAN 28.09.1981
KING PRESIDENT 17.11.1981 --> ... to here
JAMES CLERK 03.12.1981
FORD ANALYST 03.12.1981
MILLER CLERK 23.01.1982
SCOTT ANALYST 09.12.1982
ADAMS CLERK 12.01.1983
14 rows selected.
SQL>
Запрос использует два параметра: дату от (проход 01.05.1981
) и дату до (проход 17.11.1981
). Это «стандартный» способ справиться с возможностью значений параметров NULL
. Пример будет хорошо работать, например, в TOAD или SQL Developer.
select ename, job, hiredate
from emp
where (hiredate >= :par_date_from or :par_date_from is null)
and (hiredate <= :par_date_to or :par_date_to is null)
order by hiredate;
ENAME JOB HIREDATE
---------- --------- ----------
BLAKE MANAGER 01.05.1981
CLARK MANAGER 09.06.1981
TURNER SALESMAN 08.09.1981
MARTIN SALESMAN 28.09.1981
KING PRESIDENT 17.11.1981
Если оба параметра равны NULL
, возвращаются все строки таблицы.