数据转日期to_date

to_date:将字符转为日期格式

注:若你的字符集没有中文,则输入年月日字符会报错!!!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
--查找1985年以后入职的人员也就是时间做对比
--hierdate列对比1985年入职的需要将1985转换为日期类型

SQL> SELECT * FROM EMP WHERE HIREDATE >= TO_DATE(1985,'yyyy');
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



SQL> select * from emp where hiredate >= to_date(19850101,'YYYYMMDD');
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


 --1985-01-01是个字符串需要单引号
SQL> select * from emp where hiredate >= to_date('1985-01-01','YYYY-MM-DD');
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

 SQL> select to_date('1985-1-1','YYYY-MM-DD') from dual;
TO_DATE('1985-1-1','YYYY-MM-DD
------------------------------
1985/1/1

--报错:因为转换类型为MM和DD,而11容易产生歧义系统会任务11月,而没有日
SQL> select to_date('198511','YYYY-MM-DD') from dual;
select to_date('198511','YYYY-MM-DD') from dual
ORA-01861: literal does not match format string

SQL> select to_date('19850101','YYYY-MM-DD') from dual;
TO_DATE('19850101','YYYY-MM-DD
------------------------------
1985/1/1