ORA-01843 – not a valid mont

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.