Oracle 英文 非标准格式 日期 格式化

最近在处理一张表的时候,需要按照日期排序,日期字段中日期的格式有两种。

格式一:07-Aug-2015

格式二:10/28/16

日期转化及格式化sql语句:

select to_date('07-Aug-2015','dd-mm-yyyy','NLS_DATE_LANGUAGE = english') 英文日期,
to_date('10/28/16','mm/dd/yy') 日期,
to_char(to_date('07-Aug-2015','dd-mm-yyyy','NLS_DATE_LANGUAGE = english'),'yyyy-mm-dd') 英文日期格式化,
to_char(to_date('10/28/16','mm/dd/yy'),'yyyy-mm-dd') 日期格式化
from dual ;

最后使用instr判断包含-还是/使用不同的转化

to_char((case when instr(pdate,'-')>0 then to_date(pdate, 'dd-mm-yyyy', 'NLS_DATE_LANGUAGE = english')  
    when instr(pdate,'/')>0 then  to_date(pdate,'mm/dd/yy') end),'yyyy-mm-dd')

 

posted @ 2016-12-20 19:27  pengtan  阅读(1875)  评论(0编辑  收藏  举报