Oracle问题:ORA-01843: 无效的月份

错误提示

错误提示

问题分析

查询当前系统中,日期的显示方式:

SELECT * FROM v$nls_parameters;

结果如下:
在这里插入图片描述
查询不同情况日期显示方式:

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;

结果:
查询结果
可以看出:

语言为SIMPLIFIED CHINESE和Japanese时,DATA格式的月份必须为“X月”。
因此需要修改NLS_DATE_LANGUAGE参数。

解决方式

  1. 临时方法(退出当前会话就会恢复)

每次会话时,修改参数为english或American:

ALTER SESSION SET nls_date_language = 'American';
  1. 永久方法:修改glogin.sql文件

文件路径为:D:\oracle11g\Administrator\product\11.2.0\dbhome_1\sqlplus\admin

在文件中加入:

ALTER SESSION SET nls_date_language = 'American';

注:使用SQL Plus有效,PLSQL developer无效。

  1. 永久方法:修改注册表(Windows)

位置:HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDb11g_home1

新建字符串值:NLS_DATE_LANGUAGE
其值为:American

注:SQL Plus和PLSQL developer均有效。

  1. 永久方法:修改用户环境变量(Unix)(未测试)

export NLS_DATE_FORMAT =AMERICAN

export NLS_DATE_FORMAT =‘YYYY-MM-DD HH24:MI:SS’

RMAN会话中设置NLS_DATE_FORMAT 和NLS_LANG

run {

sql 'alter session set NLS_DATE_FORMAT=“YYYY-MM-DD HH24:MI:SS”;
sql 'alter session set NLS_LANG =“AMERICAN”;

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值