oracle 数据库表如下:
CREATE TABLE "SCOTT"."EMP" 
   ( "EMPNO" NUMBER(4,0), 
"ENAME" VARCHAR2(10), 
"JOB" VARCHAR2(9), 
"MGR" NUMBER(4,0), 
"HIREDATE" TIMESTAMP (6), 
"SAL" NUMBER(7,2), 
"COMM" NUMBER(7,2), 
"DEPTNO" NUMBER(2,0
   )
我做如下查询:
select * from emp where hiredate >to_date('1980-12-17','yyyy-mm-dd') ,查询结果如下:
EMPNO  ENAME  JOB  MGR  HIREDATE  SAL  COMM  DEPTNO  
7369  SMITH  CLERK  7902  17-12月-80 12.00.00.000000 上午  800     20  
然后我又做如下查询:
select * from emp where hiredate<(to_date('1980-12-17','yyyy-mm-dd')+0.99999)  查询结果如下:
EMPNO  ENAME  JOB  MGR  HIREDATE  SAL  COMM  DEPTNO  
7369  SMITH  CLERK  7902  17-12月-80 12.00.00.000000 上午  800     20  我把以上两个查询条件放在一起,就查询不出结果了!如下所示:
select * from emp where hiredate >to_date('1980-12-17','yyyy-mm-dd')  and  hiredate<(to_date('1980-12-17')+0.99999)
查询结果竟然为空!!
这是为什么啊?大街能不能告诉我。
我想避免在hiredate列上使用函数而影响索引的使用。。
为什么查询不出结果啊。。多谢!

解决方案 »

  1.   

    <(to_date('1980-12-17')+0.99999) 
    最后一段的to_date没有加格式参数,不报错?
      

  2.   

    我做如下查询: 
    select * from emp where hiredate >to_date('1980-12-17','yyyy-mm-dd') ,查询结果如下: 
    EMPNO  ENAME  JOB  MGR  HIREDATE  SAL  COMM  DEPTNO  
    7369  SMITH  CLERK  7902  17-12月-80 12.00.00.000000 上午  800    20  你可以得到这个结果?兄弟,
    要是真的可以的话,对你佩服体无完肤了
    17-12月-80 >to_date('1980-12-17','yyyy-mm-dd') ??????
    自己再查查看吧
      

  3.   

    --二楼正解!
    select * from emp where hiredate >to_date('1980-12-17','yyyy-mm-dd')  and  hiredate <(to_date('1980-12-17','yyyy-mm-dd')+0.99999) select * from emp where hiredate >to_date('1980-12-17','yyyy-mm-dd')  and  hiredate <(to_date('1980-12-17','yyyy-mm-dd')+0.99999)
      

  4.   

    --其实楼主如果是查询1980-12-17日这一天的数据的话,不用这么麻烦!这样就OK了:
    select * from emp where hiredate=to_date('1980-12-17','yyyy-mm-dd');