Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не отрабатывает условие с датой / 9 сообщений из 9, страница 1 из 1
04.01.2019, 10:25
    #39755800
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
Добрый день, помогите разобраться, почему у меня не работает условие на дату
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 WHERE (   ((:needClose = :needOpen)
       AND (c.firstopendate BETWEEN :BeginDate AND :EndDate)) 
        OR ((:needOpen = -1) 
       AND (nvl(c.closedate, (getMaxDate)) > :BeginDate) 
       AND (   (ct.contracttype <> 1) 
            OR (ct.contracttype = 1 AND st.statesign = 'BETRAY')))
        OR ((:needClose = -1) 
       AND (:BeginDate > nvl(c.closedate, (getMaxDate)))
       ))
...
Рейтинг: 0 / 0
04.01.2019, 10:35
    #39755803
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
04.01.2019, 10:55
    #39755806
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
Для примера, BeginDate = 01/11/2018 и EndDate = 04/11/2018
needClose = 1 и needOpen = 1
должно выполнятся условие
((:needClose = :needOpen)
AND (c.firstopendate BETWEEN :BeginDate AND :EndDate))
Но в отчет попадают данные которые даже не входят в этот промежуток даты
...
Рейтинг: 0 / 0
04.01.2019, 11:17
    #39755809
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
1. Тип столбца firstOpenDate в таблице какой?
2. Тип переменных beginDate и endDate какой?
3. Условие WHERE приведено целиком?
...
Рейтинг: 0 / 0
04.01.2019, 11:23
    #39755810
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
IMNO,

тип столбца firstOpenDate DATE
тип переменных DATE
условие приведено целиком
...
Рейтинг: 0 / 0
04.01.2019, 11:24
    #39755811
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
Если я это условие
Код: plsql
1.
AND (c.firstopendate BETWEEN :BeginDate AND :EndDate)

отдельно пропишу, тогда она нормально отработает

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 WHERE (   ((:needClose = :needOpen)
       AND (c.firstopendate BETWEEN :BeginDate AND :EndDate)) 
        OR ((:needOpen = -1) 
       AND (nvl(c.closedate, (getMaxDate)) > :BeginDate) 
       AND (   (ct.contracttype <> 1) 
            OR (ct.contracttype = 1 AND st.statesign = 'BETRAY')))
        OR ((:needClose = -1) 
       AND (:BeginDate > nvl(c.closedate, (getMaxDate)))
       ))
   AND (c.firstopendate BETWEEN :BeginDate AND :EndDate)  
...
Рейтинг: 0 / 0
04.01.2019, 11:44
    #39755816
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
Вы уверены, что в Вашу процедуру/скрипт передаются параметры needClose = 1 и needOpen = 1?
Судя по всему у Вас отрабатывает случай needClose = - 1 и needOpen = - 1.
...
Рейтинг: 0 / 0
04.01.2019, 12:00
    #39755821
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
IMNO,

:needClose = -1
:needOpen = -1

видимо он в этом случае все условия выполняет
(:needClose = :needOpen) и (:needOpen = -1) и (:needClose = -1)
как сделать тогда, чтобы только выполнялось (:needClose = :needOpen) ?

:needClose/:needOpen может быть 1 или 0 в зависимости выставлен чекбокс или нет
...
Рейтинг: 0 / 0
04.01.2019, 12:02
    #39755822
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывает условие с датой
Разобрался, дописал запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WHERE (   (((:needClose) = (:needOpen))
       AND (c.firstopendate BETWEEN :BeginDate AND :EndDate)) 
        OR ((:needOpen = -1) AND ((:needClose) = 0)   
       AND (nvl(c.closedate, (getMaxDate)) > :BeginDate) 
       AND (   (ct.contracttype <> 1) 
            OR (ct.contracttype = 1 AND st.statesign = 'BETRAY')))
        OR ((:needClose = -1) AND (:needOpen = 0) 
       AND (:BeginDate > nvl(c.closedate, (getMaxDate)))
       ))
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не отрабатывает условие с датой / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]