2012-10-21 25 views
7

ich eine Tabelle in SQL haben wie folgt:SQL "kein gültiger Monat"

CREATE TABLE Reserves(
    sid INTEGER, 
    bid INTEGER, 
    day DATE, 
    PRIMARY KEY (sid, bid, day), 
    FOREIGN KEY (sid) REFERENCES Sailors, 
    FOREIGN KEY (bid) REFERENCES Boats 
); 

und ich versuche, in sie einzufügen:

INSERT INTO Reserves VALUES(22, 101, '01-01-1998'); 

Aber ich bekomme die Fehlermeldung: ORA -01843: kein gültiger Monat

Dies ist eine Oracle db. Ich bin mir nicht sicher, was mit meinem Datumsformat nicht stimmt.

+3

Als allgemeine Regel, die Sie immer eine Kultur unspezifischen Datumsformat (yyyyMMdd), wenn Sie das Datumsformat deklarieren verwenden sollten explcitly. '02-01-2012' könnte 2. Januar 2012 oder 1. Februar 2012 sein, jedoch' 20120102' ist ** immer ** 2. Januar 2012 – GarethD

Antwort

21

Es ist nicht ganz klar, was Sie wollten, so könnten Sie versuchen:

  • Für Monat-Tag-Jahr-Format:

    INSERT INTO Reserves VALUES(22, 101, TO_DATE('01-01-1998','MM-DD-YYYY'));

  • Für Tag-Monat-Jahr-Format:

    INSERT INTO Reserves VALUES(22, 101, TO_DATE('01-01-1998','DD-MM-YYYY'));

Ebenfalls empfohlen: Oracle functions: TO_DATE

0

Versuchen Sie '1998-01-01'.

Ich glaube, das Standard-Datumsformat für Orakel ist JJJJ-MM-TT. Sie können den Standard für Ihre Sitzung ändern, indem Sitzung NLS_DATE_FORMAT = 'mm-dd-yyyy

Beachten Sie setzen mit verändern, dass die meisten Kunden können Sie diese auf, was Sie wollen dauerhaft

9

Sie können die date verwenden Stichwort ein ANSI-Standard Datum String angeben:

INSERT INTO Reserves VALUES(22, 101, date '1998-01-01'); 

In diesem Fall ist das Format YYYY-MM-DD oder 1. Januar 1998

+0

Danke Bob. Ich hatte gehofft, dass es einen Weg geben würde, dass ich die TO_DATE-Funktion nicht verwenden müsste. – Matt

5

Wie @Jody auch erwähnt,
Sie ändern können die Standardeinstellung für die Sitzung, indem Sie diesen Code einmal ausgeführt wird, bevor INSERT:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';

Sie können das Format in beliebiger Reihenfolge Sie ändern.

Quelle:dba-oracle.com

Verwandte Themen