01843, 00000, „not a valid month“
// *Cause: A date specified an invalid month.
// Valid months are: January-December, for format code MONTH, and Jan-Dec, for format code MON.// *Action: A date specified an invalid month.
// Valid months are: January-December, for format code MONTH, and Jan-Dec, for// format code MON.
2.) Erklärung
Es wurde kein gültiger Monat gewählt. Diese Fehlermeldung wird häufig anzeigt, wenn die Spracheinstellungen (NLS-Parameter) nicht zum Datumsformat stimmen.
Das default Datumsformat wird explizit durch die folgenden Parameter festgelegt.
NLS_DATE_FORMAT NLS_TIMESTAMP_FORMAT und NLS_TIMESTAMP_TZ_FORMAT.
Es kann aber auch implizit durch den Parameter NLS_TERRITORY festgelegt werden. Die Parameter können geändert werden durch alter session set nls_….
Beispiel für diese Fehlermeldung:
Hier ist das Default-Datumsformat implizit festgelegt durch den Parameter nls_territory also DD.MM.YY. Da hier Monat und Tag vertauscht wurden, wird 29 als ungültiger Monat angezeigt.
SQL> show parameter nls_date_format
NAME TYPE VALUE
———————————— ———– ——–
nls_date_format string
SQL> show parameter nls_territory
NAME TYPE VALUE
———————————— ———– ——————————
nls_territory string GERMANY
SQL> select sysdate from dual;
SYSDATE
——–
29.04.15
SQL> select sysdate from dual where sysdate = ‚04.29.15‘;
select sysdate from dual where sysdate = ‚04.29.15‘
*
ERROR at line 1:
ORA-01843: Kein gultiger Monat
3.) Lösungsvorschläge
NLS-Parameter prüfen und mit den Daten abgleichen.
show parameter nls_date_format
show parameter nls_territory
Danach:
SQL-Statement anpassen, das nsl_date_format mit alter session ändern oder mit der Funktion to_date eine Konvertierung in dem SQL-Statement vornehmen.