SQL> select to_char(hiredate,'YYYY-MM--DD HH:MI:SS') from dual;
select to_char(hiredate,'YYYY-MM--DD HH:MI:SS') from dual
*
第 1 行出现错误:
ORA-00904: "HIREDATE": 标识符无效
SQL> select to_char(hiredate,'YYYY-MM-DD HH:MI:SS') from emp;
TO_CHAR(HIREDATE,'Y
-------------------
1980-12-17 12:00:00
1981-02-20 12:00:00
1981-02-22 12:00:00
1981-04-02 12:00:00
1981-09-28 12:00:00
1981-05-01 12:00:00
1981-06-09 12:00:00
1987-04-19 12:00:00
1981-11-17 12:00:00
1981-09-08 12:00:00
1987-05-23 12:00:00
TO_CHAR(HIREDATE,'Y
-------------------
1981-12-03 12:00:00
1981-12-03 12:00:00
1982-01-23 12:00:00
已选择14行。
SQL> select to_char(sysdate,'YYYY-MM-DD HH:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2013-05-07 07:44:13
(把系统格式改成24进制的)
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2013-05-07 19:45:14
几个转换函数:
(先把日期转化成 一般格式,然后查询比这个日期入职早的员工)
SQL>select ename,hiredate from emp where hiredate >
to_date('1981-1-23 12:00:00','YYYY-MM-DD HH24::MI:SS');
(把薪水显示的格式转变)
SQL>select sal from emp where sal>to_number("$1,250.00','$9,999.99');
(查询全年的年薪)
SQL>select ename,sal*12 + conn from emp;
(对于奖金为0的员工的处理)
SQL>select ename,sal*12+nvl(comm,0) from emp;
to_date 转换成日期形式:
SQL> select ename,hiredate from emp where hiredate>
2 to_date('1981-2-20 12:34:33','YYYY-MM-DD HH24:MI:SS');
ENAME HIREDATE
---------- --------------
WARD 22-2月 -81
JONES 02-4月 -81
MARTIN 28-9月 -81
BLAKE 01-5月 -81
CLARK 09-6月 -81
SCOTT 19-4月 -87
KING 17-11月-81
TURNER 08-9月 -81
ADAMS 23-5月 -87
JAMES 03-12月-81
FORD 03-12月-81
ENAME HIREDATE
---------- --------------
MILLER 23-1月 -82
已选择12行。
to_number的应用:
SQL> select sal from emp where sal>to_number
2 ('$1,250.00','$9,999.99');
SAL
----------
1600
2975
2850
2450
3000
5000
1500
3000
1300
已选择9行。
SQL> select ename,sal*12+comm from emp;
ENAME SAL*12+COMM
---------- -----------
SMITH
ALLEN 19500
WARD 15500
JONES
MARTIN 16400
BLAKE
CLARK
SCOTT
KING
TURNER 18000
ADAMS
ENAME SAL*12+COMM
---------- -----------
JAMES
FORD
MILLER
已选择14行。
对于空值的处理:
SQL> select ename,sal*12+nvl(comm,0)from emp;
ENAME SAL*12+NVL(COMM,0)
---------- ------------------
SMITH 9600
ALLEN 19500
WARD 15500
JONES 35700
MARTIN 16400
BLAKE 34200
CLARK 29400
SCOTT 36000
KING 60000
TURNER 18000
ADAMS 13200
ENAME SAL*12+NVL(COMM,0)
---------- ------------------
JAMES 11400
FORD 36000
MILLER 15600
已选择14行。
主函数:
(查询emp表中的薪水最高的人)
SQL>select max(sal) from emp;
(查询emp表总共有多少行)
SQL>select count(*) from emp;
求最大值:
SQL> select max(sal) from emp;
MAX(SAL)
---------