当前位置:数据库 > Oracle >>

一个菜鸟的oracle之路-----二

一个菜鸟的oracle之路-----二
 
查询语句中使用函数
   round(**)用于数字的四舍五入。
  案例1  计算金额的四舍五入。
 
[sql] 
select ename,salary*0.1234567 s1,  
      round(salary*0.1234567,2) s2,  
      round(salary*0.1234567) s3 from emp_xxx;  
 
  案例2 数字函数 trunc(**)
    trunc()用于截取,如果没有第二个参数,默认是0
  
[sql] 
select ename,salary*0.1234567 s1,  
       round(salary*0.1234567,2) s2,  
       round(salary*0.1234567) s3,  
       trunc(salary*0.1234567,2) s4 from emp_xxx;  
 
  案例3,日期函数sysdate
    获取系统当前时间
       select sysdate from dual;
       //虚表dual是Oracle用于操作函数的方式,属于
       sys用户,共享给所以用户使用,虚表dual是单行
       单列的表,表中存放一个常量数据x
      
[sql] 
select * from dual;  
 
 
       虚表的意义,更方便的操作函数或者查询常量
       如下例。表中有多少条数据,常量就会出现多少次
      
[sql] 
select sysdate from emp_xxx;  
 
 
       //感觉查询结果与真实的有出入
       //没有出入,有几条数据则显示几次常量(当前时间)
  案例4   日期数据相减
      计算员工入职多少天
      //我的错误解 select sysdate-hiredate from emp_xxx;
      select ename,hiredate,(sysdate-hiredate)days from emp_xxx;
      日期数据相减,得到两个日期之间的天数差,不足一天用小数表示,
      可以用round函数处理,
      select ename, hiredate,round(sysdate-hiredate)days from emp_xxx;
  案例5   日期函数  months_between()**
      计算员工入职多少个月,保留有小数
        
[sql] 
select ename,hiredate,  
        months_between(sysdate,hiredate)months from emp_xxx;  
 
 
  案例6     不保留小数。入职为整数个月
        
[sql] 
select ename,hiredate,  
         round(months_between(sysdate,hiredate))months from emp_xxx;  
 
 
  案例7  计算12个月之前的时间点
        
[sql] 
select add_months(sysdate,-12)from dual;  
 
 
         //暂时未发现有add_year等方法 select add_year(sysdate,-5)from dual;
  案例8 日期函数 last_day()*
         计算本月最后一天
        
[sql] 
select last_day(sysdate) from dual;  
 
 
  案例9 转换函数
         转换函数 to_char(日期数据,格式):把日期转化为字符数据
         把时间数据按照指定格式输出。
         select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
  案例10 把时间数据按指定格式输出
         
[sql] 
select to_char(sysdate,'year month dd day dy') from dual;  
 
 
         //输出星期几的时候 用day 用dy也可以
         select to_char(sysdate,'year month dd dy') from dual;
  案例11 把时间数据按指定格式输出
        
[sql] 
select to_char(sysdate,'yyyy/mm/dd')from dual;  
        select to_char(sysdate,'mm/yyyy/dd')from dual;  
        select to_char(sysdate,'mm/y/dd')from dual;  
 
 
   小结:日期格式
       1,常用日期格式
          yyyy 四位数字年 如:2011
          year 全拼的年   如 twenty eleven
          month 全频的月  如 november 或者11月
          mm    两位数字月 如 11
          mon   简拼的月   如nov,中文没有简拼
          dd    两位数字日
          day   全拼的星期 如 tuesday
          dy    简拼的星期
          am    上午/下午 如:am/pm
          sqlplus 中的日期默认格式是 dd-mon-rr 日月年。
          yy格式是Oracle早起的时间表示方式,存在千年虫问题。
          假设现在时间为2011年,05年和98年分别被Oracle解释为
                   YY       RR
          05年    2005     2005
          98年    2098     1998
          假设现在时间为1998年,05年和98年分别被oracle解释为
                   YY       RR
          05年    1905     2005
          98年    1995     1995
  案例12,转换函数 to_date()**
        插入一条数据,标号为1012,姓名为amy,入职时间为当前系统时间
       
[sql] 
insert into emp_xxx(empno,ename,hiredate)values(1012,'amy',sysdate);  
 
 
  案例13  插入一条数据,编号为1012,姓名为amy,入职时间是2011年10月10日
        insert into emp_xxx(empno,ename,hiredate)values(1012,'amy','10-10月-11');
        //该时间格式不符合中国常用时间表示格式
  案例14   按指定时间格式插入数据
       
[sql] 
insert into emp_xxx(empno,ename,hiredate)values(1012,'amy',  
                       to_date('2019-10-10','yyyy-mm-dd'));               
       select * from emp_xxx where empno=1012;  
 
 
  案例15.
       按指定格式显示员工姓名和入职时间 显示格式为 amy 2011-10-10
       
[sql] 
select ename,to_
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,