zoukankan      html  css  js  c++  java
  • 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:oracle11gAdministratorproduct11.2.0dbhome_1sqlplusadmin

    在文件中加入:

    ALTER SESSION SET nls_date_language = 'American';
    

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

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

    位置:HKEY_LOCAL_MACHINESOFTWAREOracleKEY_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";

    ...........

    }

  • 相关阅读:
    Codeforces 492E Vanya and Field
    Codeforces 492D Vanya and Computer Game
    HDU 5125 magic balls(线段树+DP)
    HDU 5124 lines
    Codeforces 488D Strip (set+DP)
    FZU 2079 最大获利(线段树+DP)
    Codeforces 490D Chocolate
    Codeforces 490C Hacking Cypher
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/yyn-yang/p/12518072.html
Copyright © 2011-2022 走看看