добавить даты в поле переменной даты связывания - PullRequest
1 голос
/ 07 июня 2019

Мы используем формы и отчеты oracle 12c. В одном из запросов пользователи будут вводить дату через формы, а указанный ниже запрос будет извлекать необходимые данные.

SELECT COUNT(*)
 FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
 WHERE APPLN_PK=APEN_APPLN_PK
 AND APPLN_DATE <=:APPLN_DATE
 AND APPLN_SECN_ID ='PV1'
 AND APPLN_STAT='04'

То, что мне требуется, из приведенного выше запроса, данные будут получены до даты, введенной пользователями. Я хочу добавить 10 дней к дате, введенной пользователями, и записям, заполненным на эту дату.

я изменил приведенный выше запрос следующим образом

SELECT COUNT(*)
 FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
 WHERE APPLN_PK=APEN_APPLN_PK
 AND APPLN_DATE <=:APPLN_DATE+10
 AND APPLN_SECN_ID ='PV1'
 AND APPLN_STAT='04' 

выдает эту ошибку

ORA-00932: inconsistent datatypes: expected DATE got NUMBER.

Как мне изменить этот запрос

я изменил приведенный выше запрос следующим образом

SELECT COUNT(*)
 FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
 WHERE APPLN_PK=APEN_APPLN_PK
 AND APPLN_DATE <=:APPLN_DATE+10
 AND APPLN_SECN_ID ='PV1'
 AND APPLN_STAT='04' 

Например, если введено appln_date 10-may-2019, то запрос должен извлекать записи до 20-may-2019.

выдает эту ошибку

ORA-00932: inconsistent datatypes: expected DATE got NUMBER.

Как мне изменить этот запрос

1 Ответ

1 голос
/ 08 июня 2019

'10 -may-2019 '- это не дата, это текстовая строка.В первом случае Oracle достаточно умен, чтобы преобразовать текстовую строку в дату.В первом случае Oracle может выполнить преобразование, но во втором случае это сбивает с толку.

Я предлагаю изменить код на

SELECT COUNT(*)
 FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
 WHERE APPLN_PK=APEN_APPLN_PK
 AND APPLN_DATE <= TO_DATE(:APPLN_DATE, 'DD-MON-YYYY') + INTERVAL '10' DAY
 AND APPLN_SECN_ID ='PV1'
 AND APPLN_STAT='04' 
...