数据库——单行函数(日期函数,转换函数,通用函数)

注:本文中举的例子建立在Oracle提供的scott表和伪表dual的基础上

日期函数

--获取当前系统时间时间

select sysdate from dual

--三天前的时间  支持加减

select sysdate-3 from emp

--获取当月最后一天

select last_day(hiredate) from emp 


--查看员工入职日期是在80 年12月这个月的员工信息 

select * from emp where last_day(hiredate)='31-12月-80'

--NEXT_DAY(日期,星期数):求出下一个指定星期X的日期;(指的是下一次出现星期X的日期)
select next_day (sysdate,'星期三') from dual


--求出四个月后的日

select add_months(sysdate, 4) from dual

--求出两个日期之间所经历的月份
--求出每个雇员到今天为止的雇佣月份

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

注:两个日期相减操作的是 日    add_months() 操作的是  月  months_between() 操作的是 月

例:

--以年月日的方式显示所有员工的服务年限

select ename,trunc(months_between(sysdate,hiredate)/12) || '年'||
mod(trunc(months_between(sysdate, hiredate)),12) || '月' || 
trunc(sysdate-add_months(hiredate, trunc(months_between(sysdate, hiredate))))
||'日' dddddd from  emp


转换函数

· TO_CHAR(字符串 | 列,格式字符串):将日期或者是数字变为字符串显示;

select to_char(sysdate,'yyyy-mm-dd') from dual

(可以利用这个方法截取出年或者月或者日)

--每个n为输出数字

select to_char(12345678,'99,99,99,99') from dual

· TO_DATE(字符串,格式字符串):将字符串变为DATE数据显示;

select to_char ( to_date('1999-1-1 20:20:22','yyyy-mm-dd hh24:mi:ss'),'yy-mm-dd hh12:mi:ss') from dual


· TO_NUMBER(字符串):将字符串变为数字显示;

select to_number('123')+123 from dual	(246)
select '123'+'123' from dual	(246)
select '123'||'123' from dual	(123123)


通用函数

NVL()、DECODE()

NVL()函数,处理null

--NVL()函数,处理null  (列名称,具体的值) 
select sal+nvl(comm, 0) total ,ename from emp

--decode
--查询所有员工信息,显示员工的中文职位 CLERK = 办事人员 SALESMAN=销售人员 PRESIDENT=董事长
-- MANAGER=经理 ANALYST 分析师

select ename,
case
  when job ='CLERK'
    then '办事人员'
    when job ='SALESMAN'
    then '销售人员'
    when job ='PRESIDENT'
    then '董事长'
    when job ='MANAGER'
    then '经理'
   else '分析师'
  end jobs
  from emp

  --这样写很麻烦的  如果使用decode 就方便很多

  select ename , decode(job,'CLERK','办事人员','SALESMAN','销售人员',
  'PRESIDENT','董事长','MANAGER','经理','ANALYST','分析师') from emp


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值