Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1

ТЕМА:

oracle between date 12 года 3 мес. назад #4215

  •  аватар Автор темы
  • Посетитель
  • Посетитель
есть запрос
select ...
from ...
where
...
and my_date between nvl(:p_date_from, my_date) and nvl(:p_date_to, my_date)

:p_date_from = null
:p_date_to = null

с этим условием ничего не возвращает
если его убрать - возвращает

почему ?

my_date not null всегда

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle between date 12 года 3 мес. назад #4216

  •  аватар
  • Посетитель
  • Посетитель
select ...
from ...
where
...
and my_date between nvl(:p_date_from, my_date) and nvl(:p_date_to, my_date)


Ты ведь не весь предикат показал.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle between date 12 года 3 мес. назад #4217

  •  аватар
  • Посетитель
  • Посетитель
> --create table dt as select sysdate dt from dual;
> var x varchar2
> exec :x := null
anonymous block completed
> alter session set nls_Date_format='yyyy-mm-dd hh24:mi:ss'
session SET altered.
> select * from dt where dt = nvl(:x, dt)
DT                        
------------------------- 
2011-06-02 15:15:16       

> alter session set nls_Date_format='yyyy-mm-dd hh24:mi'
session SET altered.
> select * from dt where dt = nvl(:x, dt)
DT                        
-------------------------

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle between date 12 года 3 мес. назад #4218

  •  аватар
  • Посетитель
  • Посетитель

Girdal пишет:

> --create table dt as select sysdate dt from dual;
> var x varchar2
> exec :x := null
anonymous block completed
> alter session set nls_Date_format='yyyy-mm-dd hh24:mi:ss'
session SET altered.
> select * from dt where dt = nvl(:x, dt)
DT                        
------------------------- 
2011-06-02 15:15:16       

> alter session set nls_Date_format='yyyy-mm-dd hh24:mi'
session SET altered.
> select * from dt where dt = nvl(:x, dt)
DT                        
-------------------------

возможно
но все же, почему ?
неужели dt преобразуется в varchar2 ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle between date 12 года 3 мес. назад #4219

  •  аватар
  • Посетитель
  • Посетитель
Stivin,
Это был вопрос к тому, какого типа параметры.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle between date 12 года 3 мес. назад #4220

  •  аватар
  • Посетитель
  • Посетитель

неужели dt преобразуется в varchar2 ?


nvl преобразует второй аргумент к типу первого, а сравнение обратно к date.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.179 секунд