Oracle知识点三日期函数 转换函数 通用函数

日期函数;
  如果要想处理任何日期 那么都有一个基本的前提 必须知道当前的日期的是什么
select sysdate from dual;获取当前日期时间
select systimestamp from dual;获取当前日期时间戳


进一步观察伪列:
    所谓伪列就是 当不查询的时候不存在于表中 然而当查询的时候可以加上表中并显示出来.
    SYSDATE伪列里面包含有日期时间的内容 只不过现在只显示了日期数据
日期操作函数:
   日期:ADD_MONTHS(列|日期,月数) 在指定的日期上增加月份 只要日期别太大就行.
   数字MONTHS_BETWEEN(列|日期,列|日期)之间的月数 注意:前面的日期是最近的日期 后面的日期是老的日期 否者会出现负数
   日期LAST_DAY(列|日期,列|日期) 取得指定日期所在月的最后一天
   日期NEXT_DAY(列|日期,星期X) 返回下一个指定的一个日期


日期函数的综合运用:
   要求就是按 年 月 天 的方式 输出emp表雇佣的员工工作年限。
处理上(年 月)好处理  天数不好处理
   select empno,ename,hiredate,
  TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year,
  TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12))months,
  TRUNC(SYSDATE-ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate)))date;
 FROM emp;
  


转换函数:
     字符串TO_CHAR(列|日期|数字,转换格式)  将日期或数字格式化为指定结构的字符串
     日期TO_DATE(列|字符串,转换格式)  按照指定的转换格式编写字符串后将其变为日期型数据
     数字TO_NUMBER(列|字符串)将字符串变为数字
1TO_CHAR()函数
  如果要想将一个日期或数字变为字符串 那么首先必须清楚转换格式
     .日期:年(yyyy),月(mm),日(dd);
     .时间:时(hh,hh24),分(mi),秒(ss);
     .数字:任意数字(9),本地货币符号(L).
范例:将日期显示格式化
   select TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;
在之前一直强调SYSDATE里面会包含有日期和时间两类内容
 范例:格式化日期时间
  select  TO_CHAR(SYSDATE,'yyyy-mm-dd hh:mi:ss')FROM dual;
  select  TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss')FROM dual;//显示24小时制的日期
转换字符串函数还要一个强悍的功能可以实现日期数据的拆分.
   select TO_CHAR(SYSDATE,'yyyy'),TO_CHAR(SYSDATE,'mm'),TO_CHAR(SYSDATE,''dd) FROM dual;
//字符串拆分应用的地方
   实现日期数据的拆分 查询在所有二月份雇佣的雇员


     SELECT*from emp where TO_CHAR(hiredate,'mm')='02';
     SELECT*from emp where TO_CHAR(hiredate,'mm')=02;
  以上都能使用ORACLE都有类型转换.


2转日期函数
   在之前发现如果想要编写一个日期型数据 那么需要按照指定的字符串转型 在Oracle中有自动转型
但是除了自动转型之外 也可以采用手工的方式转型
范例:将字符串变为日期
 select TO_DATE('1889-10-19','yyyy-mm-dd')FROM dual;
3转数字函数
 TO_NUMBER()可以将一个字符串变为数字操作。
select TO_NUMBER('1')+ TO_NUMBER('2')FROM dual;
select'1'+'2' FROM dual;
 以上两个语句的效果是一样的.
ORACLE里面已经默认提供了许多的自动转换机制 所以针对于转换函数 唯一重要的也就在于TO_CHAR()


通用函数
   通用函数一般都是指的是Oracle特色函数 主要有两个通用函数


1  数字NVL(列|NULL,默认值)   描述:如果传入的内容是null则使用默认数值处理 如果不是空则使用原始数值处理


2  数据类型DECODE(列 | 字符串 |数值,比较内容1 ,显示内容1,比较内容2,显示内容2,...[,默认显示内容])
    描述:设置的内容会与每一个比较内容进行比较 如果内容相同 则会使用显示内容进行输出 如果不相同 则用最后的显示


1处理null函数
   要求查询出每个雇员的编号
当查询的时候有null的时候 可能查询结果出现和预期不一样的结果 此时用NVL函数可以解决这个问题 可以把null值当做 0对待
2 decode函数()类似于程序的if...else感觉 但是与if...else不同的是  
范例:将所有的职位信息替换为中文显示
   select ename,job,DECODE(job,'CLERK','办事员'..) FROM emp ;在一些笔试中decode函数还是被经常问到的


总结:
  1 每一个函数都只是完成一个独立的功能 并且所有的函数都可以在sql语句完成功能
  2 要求可以记下每一个函数的函数名称以及作用 这样在编写代码的时候就可以方便很多
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值