ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 日期格式的转换

日期格式的转换

原创 Linux操作系统 作者:to_be_dba 时间:2013-07-08 15:50:48 0 删除 编辑
 
实际工作中可能遇到需要将varchar类型的日期或者由其他形式给出的不同格式日期导入数据库的需求。
可以使用正则表达式得到结果。
比如:
SQL>  select
  2   airline_code,eff_from
  3   ,case
  4    when regexp_like(eff_from,'^([0-9]{4}-[0-9]{1,2}-[0-9]{1,2})$') then TO_DATE(EFF_FROM,'YYYY-MM-DD')
  5    when regexp_like(eff_from,'^([0-9]{8})$') then TO_DATE(EFF_FROM,'YYYYMMDD')
  6    when regexp_like(eff_from,'^([0-9]{1,2}/[0-9]{1,2}/[0-9]{2})$') and TO_DATE(EFF_FROM,'MM/DD/YY')>sysdate then add_months(TO_DATE(EFF_FROM,'MM/DD/YY'),-1200)
  7    when regexp_like(eff_from,'^([0-9]{1,2}/[0-9]{1,2}/[0-9]{2})$') and TO_DATE(EFF_FROM,'MM/DD/YY')  8    when eff_from is null then to_date('20130101','yyyymmdd')
  9    end as effective_from
 10   from stage_airline;
AIRLINE_CODE EFF_FROM                                                                         EFFECTIVE_FROM
------------ -------------------------------------------------------------------------------- --------------
695                                                                                           1996-8-1
512          08/12/11                                                                         2011-8-12
512          1994-1-1                                                                         1994-1-1
695          08/23/93                                                                         1993-8-23
706          08/01/05                                                                         2005-8-1
706          20020101                                                                         2002-1-1
6 rows selected

这是一个典型的日期转化。由于MM/DD/YY默认是当前的世纪(21世纪,20XX年),以前的19XX年被认为是20XX年,整整差了100年,需要用条件判断并修改过来。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451536/viewspace-765790/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 10053事件初探.TXT
请登录后发表评论 登录
全部评论

注册时间:2011-11-23

  • 博文量
    148
  • 访问量
    390962