oracle 时间处理

日期类型的数据
   date
   建立一张订单表
   create table datet(
     oid     varchar2(30),
     oname   varchar2(50),
     omoney  number,
     odate   date
   );


   a.放入日期类型的数据
     日期的格式: 'dd-MON-yy'//英文
                  'dd-n月-yy'//中文
   insert into datet
       values('liu001','liu',123,'12-AUG-2013');
   
   b.如何表现四位年
     日期的格式显示
     to_char(要处理的日期,'日期格式')
      日期格式
      yyyy
      mm
      dd


      hh24
      mi
      ss


    eg.
    select to_char(odate,'yyyy-mm-dd hh24:mi:ss')  from datet where oid='liu001';


     day      星期几
     mon      三位月的缩写
     month    全写
     pm       表达上午还是下午
                  am       pm


    eg1.
    select to_char(odate,'yyyy-mm-dd hh24:mi:ss day pm mon')  from datet where oid='liu001';




   c.按照需求放入日期
     放入当前日期 ------- sysdate
     insert into datet values ('liu002','chi',898,sysdate);
     commit;
   
     select to_char(odate,'yyyy-mm-dd hh24:mi:ss') from datet where oname='chi';


     放入任何一个制定的日期
     2008-08-08  20:08:08


     to_date(par1,par2)
     par1表示要转换的日期字符串
     par2表示根据日期字符串指定日期格式


     eg.
     insert into datet values ('liu003','lcc',8448,to_date('2008-08-08 20:08:08','yyyy-mm-dd hh24:mi:ss'));


     select to_char(odate,'yyyy-mm-dd hh24:mi:ss') from datet where oname='lcc';
     
     练习:
     /*2013-09-19 22:08:15*/
     insert into datet values('liu004','lchi',7787,to_date('2013-09-19 22:08:15','yyyy-mm-dd hh24:mi:ss'));
     
     select to_char(odate,'yyyy-mm-dd hh24:mi:ss') from datet where oname='lchi';


   d.对日期的调整
     按照天对日期进行调整
     select to_char(odate-1,'yyyy-mm-dd hh24:mi:ss') from datet where oname='lchi';


   e.按照小时 分钟 秒进行调整
     select to_char(odate-1/(24*3600),'yyyy-mm-dd hh24:mi:ss') from datet where oname='lchi';//秒


   f.按照月进行调整
     select to_char(add_months(odate,-1),'yyyy-mm-dd hh24:mi:ss') from datet where oname='lchi';
     
   g.给定一个时间,得到这个时间对应月的最后一天的时间
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from datet;


     last_day(日期)
     select to_char(last_day(sysdate),'yyyy-mm-dd hh24:mi:ss') from datet;


     eg.
     2013-08-08 19:08:08
     select to_char(last_day('2013-08-15 19:08:08','yyyy-mm-dd hh24:mi:ss') from datet;


     next_day(日期)
     
   h.round 
     trunc   来处理日期类型
     /*默认以天为单位进行四舍五入*/
     select round(sysdate)  from datet;
     select to_char(round(sysdate),'yyyy-mm-dd hh24:mi:ss')  from datet;


     edit  进入标准的vi编辑界面
     保存退出之后执行


     还可以指定单位进行四舍五入
      /*看过没过半天*/
     select to_char(round(sysdate,'dd'),'yyyy-mm-dd hh24:mi:ss')  from datet;
     select to_char(round(sysdate,'mm'),'yyyy-mm-dd hh24:mi:ss')  from datet; 
     select to_char(round(sysdate,'yy'),'yyyy-mm-dd hh24:mi:ss')  from datet;
    
     /*trunc 默认以天为单位进行截取*/
     select to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss')  from datet;
     select to_char(trunc(sysdate,'dd'),'yyyy-mm-dd hh24:mi:ss')  from datet;
     select to_char(trunc(sysdate,'mm'),'yyyy-mm-dd hh24:mi:ss')  from datet;


-------------------------------------------------------------------------------
   给定一个日期,求出这个日期对应的月的最后一天的最后一秒对应的时间点.
   用to_char来验证
   sysdate------2013-09-30  23:59:59
   2008-08-08 20:08:08 --------2008-08-31  23:59:59


   select to_char(trunc(last_day(sysdate)+1)-1/(24*60*60),'yyyy-mm-dd hh24:mi:ss') from datet;
   select to_char(trunc(add_months(sysdate,1),'mm')-1/(24*60*60),'yyyy-mm-dd hh24:mi:ss') from datet;
        add_months(trunc(sysdate,'mm'),1)-1/(24*60*60)


   select to_char(trunc(last_day('2008-08-08 20:08:08')+1)-1/(24*60*60),'yyyy-mm-dd hh24:mi:ss') from datet;
   select to_char(last_day('2008-08-08 20:08:08'),'yyyy-mm-dd hh24:mi:ss') from datet;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值