日期函数
获取当前日期:
SYSDATE
select sysdate from dual;
可以日期进行相应的加减法操作:
select sysdate+30,sysdate-30 from dual;
日期减去日期:
select ename,hiredate,sysdate-hiredate from emp;
很多的编程语言之中,也都会提出一种概念,日期可以用过数字表示出来:
除了上述的加减日期,也提供了如下的四个操作函数:
LAST_DAY(日期):求出指定日期的最后一天
NEXT_DAY(日期,星期数):求出以一个指定星期X的日期
ADD_MONTHS(日期,数字):求出若干月之后的日期
MONTHS_BETWEEN(日期1,日期2):求出两个日期之间所经历的月份
LAST_DAY函数:
select last_day(sysdate) from dual;
NEXT_DAY函数:
select next_day(sysdate,'星期日') from dual;
ADD_MONTHS函数:
select add_months(sysdate,3) from dual;
MONTHS_BETWEEN函数:
求出雇员至今在职的月份:
select ename,hiredate,months_between(sysdate,hiredate) from emp;
在所有的开发之中,如果是日期的操作,建议使用以上的函数,因为这些函数可以避免闰年操作
转换函数
TO_CHAR(字符串|列,格式字符串):将日期或者是数字变为字符串显示
TO_DATE(字符串,格式字符串):将字符串变为DATE数据显示
TO_NUMBER(字符串):将字符串变为数字显示
TO_CHAR函数:
select to_char(sysdate,'yyyy-mm-dd'),to_char(sysdate,'yyyy') year,to_char(sysdate,'mm') month,to_char(sysdate,'dd') day from dual;
按照年月日的格式显示’yyyy’代表年份,’mm’代表月份,’dd’代表天
select to_char(sysdate,'hh:mi:ss') from dual;
默认是12小时制,改成24小时制在’hh’后面加上24即可
TO_CHAR不仅可用于字符串,还可用于数字的格式化上:
select to_char(82312456,'999,999,999,999') from dual;
如果需要添加货币符号,则只需’L999,999,999’即可,L代表‘Locale’当前语言环境下的货币符号
TO_DATE函数
select to_date('2017-03-19','yyyy-mm-dd') from dual;
TO_NUMBER函数
基本不会使用到,因为在进行算术运算时,会默认将字符串转换为数字
select to_number('1')+to_number('22') from dual;
select '1'+'22' from dual;
通用函数
通用函数主要是有两个:NVL(),DECODE(),这两个函数算是Oracle的特色函数
NVL( )函数:处理null
求全部员工的收入:
select ename,sal,comm,(sal+comm)*12 from emp;
有没有发现,虽然有人的SAL有值,但是却没有收入,原因是在于COMM为空所造成的,那么用NVL来处理:
select ename,sal,comm,(sal+NVL(comm,0))*12 from emp;
DECODE():多数值判断
DECODE函数非常类似于程序中的if-else语句,唯一不同的是DECODE()函数判断的是数值,而不是逻辑条件
语法:DECODE(数值|列,判断值1,显示值1,判断值2,显示值2,….,判断值n,显示值n,)
例如现在需要显示全部雇员的职位,但是这些职位要求替换为中文显示:
CLERK :办事员
SALESMAN:销售
MANAGER:经理
ANALYST:分析员
PRESIDENT:总裁
select ename,job,decode(job,'CLERK','办事员','SALESMAN','销售','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁') from emp;