Если указан диапазон дат, вернуть журналы в таблице в пределах указанного диапазона c, иначе вернуть все журналы в таблице, где дата указана в метке времени —- oracle запрос - PullRequest
0 голосов
/ 17 июня 2020

Если указан диапазон дат, вернуть данные в таблице в пределах указанного c диапазона, иначе вернуть все данные в таблице, где дата указана в метке времени —- oracle запрос

1 Ответ

0 голосов
/ 17 июня 2020

Вот как я понял вопрос.

На основе таблицы Скотта 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, возвращаются все строки таблицы.

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