Oracle学习笔记(三)

一、日期计算

1、日期+number=number天以后
      日期-number=number天以前
      日期1-日期2=两个日期之间相差的天数

2、Oracle取系统时间sysdate

select sysdate from dual;--取当前的数据库时间

select sysdate+10 from dual;--当前系统时间后十天的时间

select ename,sysdate-hiredate hiredate from emp;--计算出一个的在职时间

select ename,round(sysdate-hiredate,0) hiredate from emp;--将在职时间进行四舍五入

二、日期格式

yyyy:用数字表达的四位年(2016年)

mm:用数字表达的二位月(01月)

dd:用数字表达的二位日(01日)

hh24:用数字表达的24小时制的小时(20点)

hh12:用数字表示的12小时制的小时(11点)

mi:用数字表达的分钟(30分)

ss:用数字表达的秒(30秒)

d:用数字表达的一周内的第几天(周日:1)

day:用全拼表达的星期几(英文:sunday,中文:星期日)

month:用全拼表达的月份(March)

select to_char (sysdate,'year month dd day d hh12 am') from dual;

select to_char(sysdate,'yyyy"年"mm"月"dd"日") from dual;

select sysdate from dual;--默认日期格式是:DD-Mon-RR

1.RR和YY的区别:

              RR             YY(直接取当前日期的前两位作为世纪)

05年      2005           2005

99年      1999           2099

三、日期函数

1.months_between(date1,date2);--date1,date2的时间间隔多少月

select ename,months_between(sysdate,hiredate) hiredate from emp;


2.add_months(date,num);--时间date+num个月,num可有负,代表num个月之前的这一天

select add_months(sysdate,6) from dual;


3.next_day(sysdate,num);--下周的周num

select next_day(syadate,5) from dual;--下周四

select next_day(sysdate,'THR') from dual;--下周四

英文环境下使用‘THR’,中文环境下使用‘星期四’,数字通用


last_day(date);--date所在月的最后一天

select last_day(syadate) from dual;

四、转换函数

to_char/to_date/to_number


1.to_number将字符串转换成数值

语法:to_number('字符串','格式')

select to_number('12')*12 from dual;--144

select to_number('$12,345.67','$99,999.99') from dual;--12345.67

select to_number('$12,345.67','$99,999.99') *0.1 from dual;--1234.567

2.to_char将数值或日期转换成字符串

语法:to_char(number,'fmt')

格式说明:

9代表数字位

0定义宽度大于实际值宽度时,0会被强制显示在前面,以补齐位数

$美元的货币符号

L本地货币符号

.小数点

,每千位显示一个,

如果显示位数不足(定义宽度小于实际值宽度),用#代替

select to_char(12345,'$99,999.00') from dual;

select to_char(sysdate, 'yyyy/mm/dd day am') from dual;--2016/06/15 Wednesday am

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--2016-06-15 09:59:45

3.to_date将字符变成日期

语法:to_date(char,'fmt')

select to_date('2010-10-10','yyyy-mm-dd') from dual;--2010-OCT-10


insert into emp(empno,ename,hiredate)

values(1234,'zhangsan',

to_date('2011-02-14','yyyy-mm-dd'));

五、通用函数

nvl/coalesce/decode

nvl:空值处理函数

nvl(comm,0);--如果comm为空,则显示0

nvl(hiredate,'01-09-10');--如果hiredate为null,则显示01-09-10

nvl(job,'No job Yet');--如果job为空,则显示No job Yet


select ename,sal,comm.nvl(comm,100) bonus from emp;

select ename,nvl(hiredate,

to_date('2016-02-01','yyyy-mm-dd')) hiredate

from emp;


coalesce:返回第一个非空表达式

coalesce(comm,salary,100)

select ename,sal,comm,coalesce(comm,sal,100) bonus from emp;


decode:分支函数

decode(job,'SALESMAN',1.10*sal,'ANALYST',1.15*sal,'MANAGER',1.20*sal,sal)

selsct ename,job,sal,

decode(job,'SALESMAN',1.10*sal,

   'ANALYST',1.15*sal,

   'MANAGER',1.20*sal,

   sal) bonus

from emp;

转载请注明出处

猜你喜欢

转载自blog.csdn.net/u014596135/article/details/51682858
今日推荐