最近在处理一张表的时候,需要按照日期排序,日期字段中日期的格式有两种。
格式一: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\')