ORA-01843与NLS_DATE_FORMAT问题分析
在Oracle SQL的where子句中传入字符类型参数'19-11月-08',使得可以直接和日期类型比较,或者转换一下同日期类型比较。
如果传入的字符格式和NSL_DATE_FORMAT一致,那么可以不转换直接用,否则会报ORA-01861错误。如果转换得不正确,则可能会报ORA-01843或其他错误。
例如:
SQL> select * from v$nls_parameters;PARAMETER VALUE------------------------------ ----------------------------------------NLS_LANGUAGE SIMPLIFIED CHINESENLS_TERRITORY CHINANLS_CURRENCY ¥NLS_ISO_CURRENCY CHINANLS_NUMERIC_CHARACTERS .,NLS_CALENDAR GREGORIANNLS_DATE_FORMAT DD-MON-RRNLS_DATE_LANGUAGE SIMPLIFIED CHINESENLS_CHARACTERSET ZHS16GBKNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY ¥NLS_NCHAR_CHARACTERSET AL16UTF16NLS_COMP BINARYNLS_LENGTH_SEMANTICS BYTENLS_NCHAR_CONV_EXCP FALSE已选择19行。?
NLS_DATE_LANGUAGE是"SIMPLIFIED CHINESE",即简体中文。所以月份值是中文如"11月"。