这样查询: 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多的日期格式,但都报错“文字与格式字符串不匹配”,郁闷,书上就是这样写的,我怎么就执行不对呢,请高人指点一下,谢了。
结果:
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多的日期格式,但都报错“文字与格式字符串不匹配”,郁闷,书上就是这样写的,我怎么就执行不对呢,请高人指点一下,谢了。
ORACLE的Date型,不像ms sql里可以写个字符串日期比较
要两边类型一样
所以,要么如一楼的
要么这样
hiredate>to_date('20080101','yyyymmdd')建议用to_date
因为如果hiredate上面有索引的话,用to_char会使索引失效,除非你做的索引是to_char
结果却是和没有where子句一样呢,为什么没有执行where子句?谢谢
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