Oracle学习(三):单行函数(四)
- --------------
21-10月-12 22-10月-12 23-10月-12
SQL> --员工的工龄
SQL> select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,
2 (sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年
3 from emp;
ENAME HIREDATE 天 星期 月 年
---------- -------------- ---------- ---------- ---------- ----------
SMITH 17-12月-80 11632.6571 1661.80815 387.755235 31.8702933
ALLEN 20-2月 -81 11567.6571 1652.52244 385.588569 31.6922111
WARD 22-2月 -81 11565.6571 1652.23672 385.521902 31.6867317
JONES 02-4月 -81 11526.6571 1646.66529 384.221902 31.5798824
MARTIN 28-9月 -81 11347.6571 1621.09387 378.255235 31.0894714
BLAKE 01-5月 -81 11497.6571 1642.52244 383.255235 31.5004303
CLARK 09-6月 -81 11458.6571 1636.95101 381.955235 31.393581
SCOTT 13-7月 -87 9233.65706 1319.09387 307.788569 25.2976906
KING 17-11月-81 11297.6571 1613.95101 376.588569 30.9524851
TURNER 08-9月 -81 11367.6571 1623.95101 378.921902 31.1442659
ADAMS 13-7月 -87 9233.65706 1319.09387 307.788569 25.2976906
ENAME HIREDATE 天 星期 月 年
---------- -------------- ---------- ---------- ---------- ----------
JAMES 03-12月-81 11281.6571 1611.66529 376.055235 30.9086495
FORD 03-12月-81 11281.6571 1611.66529 376.055235 30.9086495
MILLER 23-1月 -82 11230.6571 1604.37958 374.355235 30.7689235
已选择14行。
SQL> select hiredate+sysdate from emp;
select hiredate+sysdate from emp
*
第 1 行出现错误:
ORA-00975: 不允许日期 + 日期
SQL> host cls
SQL> select last_day(sysdate) from dual;
LAST_DAY(SYSDA
--------------
31-10月-12
SQL> --MONTHS_BETWEEN 计算工龄
SQL> select (sysdate-hiredate)/30 一,MONTHS_BETWEEN(sysdate,hiredate) 二
2 from emp;
一 二
---------- ----------
387.755329 382.182577
385.588662 380.085802
385.521996 380
384.221996 378.666448
378.255329 372.827738
383.255329 377.698706
381.955329 376.440641
307.788662 303.311609
376.588662 371.182577
378.921996 373.472899
307.788662 303.311609
一 二
---------- ----------
376.055329 370.634189
376.055329 370.634189
374.355329 368.989028
已选择14行。
SQL>
host cls
SQL> --114月后
SQL> select add_months(sysdate,114) from dual;
ADD_MONTHS(SYS
--------------
22-4月 -22
SQL> --从今天开始算(2012.10.22星期一),下一个星期一
SQL> select next_day(sysdate,'星期一') from dual;
NEXT_DAY(SYSDA
--------------
29-10月-12
SQL> --从今天开始算(2012.10.22星期一),下一个星期二
SQL> select next_day(sysdate,'星期二') from dual;
NEXT_DAY(SYSDA
--------------
23-10月-12
SQL> host cls
SQL> --对日期进行四舍五入
SQL> select round(sysdate,'month') 一,round(sysdate,'year') 二 from dual;
一 二
-------------- --------------
01-11月-12 01-1月 -13
SQL> --隐式转换的前提: 被转换对象是可以转换的
SQL> host cls
SQL> --显式转换
SQL> --2012-10-22 16:24:13 今天是星期一
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI
----------------------------------
2012-10-22 16:25:52今天是星期一
SQL> --查询员工的薪水: 货币符号,两位小数,千位符
SQL> select sal, to_char(sal,'L9,999.99') from emp;
SAL TO_CHAR(SAL,'L9,999
---------- -------------------
800 ¥800.00
1600 ¥1,600.00
1250 ¥1,250.00
2975 ¥2,975.00
1250 ¥1,250.00
2850 ¥2,850.00
2450 ¥2,450.00
3000 ¥3,000.00
5000 ¥5,000.00
1500 ¥1,500.00
1100 ¥1,100.00
SAL TO_CHAR(SAL,'L9,999
---------- -------------------
950 ¥950.00
3000 ¥3,000.00
1300