ORA-01843:无效的月份(TO_CHAR转化日期格式问题)

执行 下面的SQL语句时

select TO_DATE('01-FEB-1988', 'DD-MON-YYYY') from dual;

出现了如下的错误:

 

重新查询了一下 当前系统时间 的日期格式,发现如下:

执行:

SELECT TO_CHAR(sysdate, 'DD-MON-YYYY','NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE''') Chn,
        TO_CHAR(sysdate, 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American') Ame,
        TO_CHAR(sysdate, 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = Japanese') Jap,
        TO_CHAR(sysdate, 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = english') Eng
FROM DUAL;

出现如下结果:

由SQL语句,可以看出,第一道第四行的TO_CHAR函数获取系统时间分别为 china,American,Japanese,English

从结果图看出,在china和Japanese下的时间格式为  27-7月-2018

由此可知,在上述的问题中,要想将时间格式转化为  “DD-MON-YYYY”  这种形式时会出现 ORA-01843的错误,因为系统不会去识别 英文的MON;

所以解决办法如下:

1.将select TO_DATE('01-FEB-1988', 'DD-MON-YYYY') from dual;中的时间字段改成中文格式的,即“01-二月-1998”;

2.设置其NLS_DATE_LANGUAGE的格式为Aerican或者是English即可

ALTER SESSION SET nls_date_language = 'SIMPLIFIED CHINESE';

 

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值