Error starting at line 1 in command:
SELECT TO_DATE('02-AUG-2003') - TO_DATE('31-JUL-2003') FROM dual
Error report:
SQL Error: ORA-01843: not a valid month
01843. 00000 -  "not a valid month"
*Cause:    
*Action:

解决方案 »

  1.   

    SELECT TO_DATE('02-AUG-2003')-TO_DATE('31-JUL-2003')   FROM   dual ..
    可以执行啊.返回结果是2.
    SELECT TO_DATE('02-AUG-2003'),TO_DATE('31-JUL-2003')   FROM   dual 
    这样返回
        TO_DATE('02-AUG-2003') TO_DATE('31-JUL-2003')
    1 2003-8-2 2003-7-31你的错误:
    SQL   Error:   ORA-01843:   not   a   valid   month 
    01843.   00000   -     "not   a   valid   month" 
    是不是你的数据库不支持这种英文月份缩写?看看你的系统区域或者NLS_LANG我的也是10G,NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
      

  2.   

    楼主最好能查看一下NLS_TERRITORY ,NLS_DATE_FORMAT这两个初始化参数的值.因为你的TO_DATE这个函数并没有指定要转换的格式.那么ORACLE系统将会使用NLS_DATE_FORMAT中指定的格式进行转换.而NLS_DATE_FORMAT这个参数的默认值又是来自NLS_TERRITORY的.而NLS_TERRITORY的默认值又来自于NLS_LANGUAGE.基于此,在使用TO_DATE,TO_CHAR这些格式转换函数时,最好能写出要转换的格式.以免出现一些不必要的错误.