获取当前日期: 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;