Oracle, где пункт выбора даты не работает - PullRequest
0 голосов
/ 18 сентября 2018

В принципе, моя проблема может быть воссоздана с использованием следующего сценария в oracle db:

create table test
(
current_date date
);

insert into test(current_date) values(  TO_DATE('2018-02-01', 'yyyy-MM-dd') ); 
insert into test(current_date) values(  TO_DATE('2018-03-01', 'yyyy-MM-dd') ); 
insert into test(current_date) values(  TO_DATE('2018-04-01', 'yyyy-MM-dd') ); 

--select data later than May
select * from test where  current_date >=  TO_DATE('2018-05-01', 'yyyy-MM-dd') ; 

Но все три даты получаются как результат?Зачем?Я что-то здесь не так сделал?

2/1/2018 12:00:00 AM
3/1/2018 12:00:00 AM
4/1/2018 12:00:00 AM

1 Ответ

0 голосов
/ 18 сентября 2018

Это потому, что current_date является встроенной функцией Oracle, возвращающей текущую дату (и время).Работа пространств имен Oracle означает, что встроенная ссылка превосходит имя вашего столбца.

Один из способов исправить это - использовать псевдоним таблицы в вашем запросе:

 select * from test t 
 where  t.current_date >=  TO_DATE('2018-05-01', 'yyyy-MM-dd') ;

Это говорит Oracleвы ссылаетесь на имя столбца, а не на встроенное.

Очевидно, что лучшим решением является изменение таблицы, чтобы у вас не было имени столбца, которое конфликтует со встроенным Oracle.

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