SQL单行函数-日期函数、转换函数、通用函数

    xiaoxiao2021-03-25  67

    日期函数

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

    转载请注明原文地址: https://ju.6miu.com/read-38938.html

    最新回复(0)