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

日期函数

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值