这样查询: select empname,hiredate from emp;
结果:
EMPNAME    HIREDATE
---------- --------------
Abel       06-5月 -90
Ivan       13-1月 -92
Alan       23-6月 -91
Henry      05-2月 -92
Bard       26-3月 -91
Harry      15-6月 -91
....一共三十行但是,如果加上条件:select empname, hiredate from emp where hiredate>'01-1月 -93';
结果却是和没有加where条件时一样,还显示上面的30条结果,我想是不是应该和我的XP系统中默认的日期格式一致,于是改写了N多的日期格式,但都报错“文字与格式字符串不匹配”,郁闷,书上就是这样写的,我怎么就执行不对呢,请高人指点一下,谢了。

解决方案 »

  1.   

    select empname, hiredate from emp where to_char(hiredate,'yyyymmdd')>'20080101'; 
      

  2.   

    oracle里的日期字段一般都设的是DATE型
    ORACLE的Date型,不像ms sql里可以写个字符串日期比较
    要两边类型一样
    所以,要么如一楼的
    要么这样
    hiredate>to_date('20080101','yyyymmdd')建议用to_date
    因为如果hiredate上面有索引的话,用to_char会使索引失效,除非你做的索引是to_char
      

  3.   

    但是,为什么我这样写select empname, hiredate from emp where hiredate>'01-1月 -93'; 
    结果却是和没有where子句一样呢,为什么没有执行where子句?谢谢
      

  4.   

    楼主,我执行了一下,是有变化的呀。SQL> select * from emp ;
     
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7369 haha       CLERK      7902 1980-12-17     800.00               20
     7499 ALLEN      SALESMAN   7698 1981-2-20     1600.00    300.00     30
     7521 WARD       SALESMAN   7698 1981-2-22     1250.00    500.00     30
     7566 JONES      MANAGER    7839 1981-4-2      2975.00               20
     7654 MARTIN     SALESMAN   7698 1981-9-28     1250.00   1400.00     30
     7698 BLAKE      MANAGER    7839 1981-5-1      2850.00               30
     7782 CLARK      MANAGER    7839 1981-6-9      2450.00               10
     7788 SCOTT      ANALYST    7566 1987-4-19     3000.00               20
     7839 KING       PRESIDENT       1981-11-17    5000.00               10
     7844 TURNER     SALESMAN   7698 1981-9-8      1500.00      0.00     30
     7876 ADAMS      CLERK      7788 1987-5-23     1100.00               20
     7900 JAMES      CLERK      7698 1981-12-3      950.00               30
     7902 FORD       ANALYST    7566 1981-12-3     3000.00               20
     7934 MILLER     CLERK      7782 1982-1-23     1300.00               10
     
    14 rows selected
     
    SQL> ;
    SQL> ;
    SQL> ;
    SQL> select * from emp where hiredate>'01-1月 -83'; 
     
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7788 SCOTT      ANALYST    7566 1987-4-19     3000.00               20
     7876 ADAMS      CLERK      7788 1987-5-23     1100.00               20
      

  5.   

    我表中的hiredate定义的是date类型,你的也是么