Database Oracle where子句日期选择不起作用

Database Oracle where子句日期选择不起作用,database,oracle,Database,Oracle,基本上,我的问题可以在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 tes

基本上,我的问题可以在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

这是因为
current_date
是Oracle内置的函数,返回当前日期(和时间)。Oracle名称空间的工作方式意味着内置引用胜过您的列名

解决此问题的一种方法是在查询中使用表别名:

 select * from test t 
 where  t.current_date >=  TO_DATE('2018-05-01', 'yyyy-MM-dd') ;
这表明Oracle引用的是列名,而不是内置名称


显然,更好的解决方案是更改表,这样就不会有与Oracle内置函数冲突的列名。

这是因为
current\u date
是Oracle内置函数,返回当前日期(和时间)。Oracle名称空间的工作方式意味着内置引用胜过您的列名

解决此问题的一种方法是在查询中使用表别名:

 select * from test t 
 where  t.current_date >=  TO_DATE('2018-05-01', 'yyyy-MM-dd') ;
这表明Oracle引用的是列名,而不是内置名称

显然,更好的解决方案是更改表,这样就不会有与Oracle内置名称冲突的列名