Oracle 12c中Fri Nov 23 2018格式日期转换为mm/dd/yyyy格式咨询
Oracle 12c 英文日期字符串转mm/dd/yyyy格式解决方案
实现逻辑为先将字符串转为Oracle DATE类型,再格式化为目标格式,核心是匹配输入字符串的格式掩码,同时指定英文语言参数避免会话环境差异导致报错。
可直接运行的稳妥写法(适配所有会话语言环境)
SELECT TO_CHAR( TO_DATE('Fri Nov 23 2018', 'DY MON DD YYYY', 'NLS_DATE_LANGUAGE = AMERICAN'), 'MM/DD/YYYY' ) AS converted_date FROM DUAL;
运行后输出结果为 11/23/2018。
注意事项
- 输入字符串对应掩码说明:
DY匹配星期英文缩写,MON匹配月份英文缩写,DD匹配两位日期,YYYY匹配四位年份 - 显式指定
NLS_DATE_LANGUAGE = AMERICAN是为了避免当前会话默认语言为非英文时,无法识别英文的星期、月份缩写导致ORA-01843: 无效的月份类报错 - 如果输入字符串存在首尾多余空格,可以先用
TRIM()函数处理输入值,避免格式匹配失败:
SELECT TO_CHAR( TO_DATE(TRIM(' Fri Nov 23 2018 '), 'DY MON DD YYYY', 'NLS_DATE_LANGUAGE = AMERICAN'), 'MM/DD/YYYY' ) AS converted_date FROM DUAL;
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

