2016-04-14 19 views
-2

Dies ist die Tabelle, die ich erstellt habe und die insert Anweisung, die ich habe.SQL kein gültiger Monat

Was ist daran falsch?

CREATE TABLE FLIGHT_SA 
(FLIGHT_NUMBER CHAR(10) PRIMARY KEY, 
AIRCRAFT_ID CHAR(15) NOT NULL, 
TRANSFER_FLIGHT_NUMBER CHAR(25) NOT NULL, 
DEPARTURE_DATE_TIME TIMESTAMP, 
ARRIVAL_DATE_TIME TIMESTAMP, 
DEPARTURE_AIRPORT_CODE CHAR(15), 
TRANSFER_AIRPORT_CODE CHAR(15), 
ARRIVAL_AIRPORT_CODE CHAR(15), 
DURATION CHAR(5)); 

INSERT INTO FLIGHT_SA 
VALUES 
('MS986','B773','MS798','2016-06-05 10:45:01','2016-06-05 12:45:01', 
'Baltimore,MD (BWI)','Philadephia,PA (PHL)','Miami,FL (MIA)','5 HOURS'); 
+0

Was ist der spezifische Fehler, den Sie bekommen? –

+0

ORA-01843: kein gültiger Monat – kdawge

+2

Beachten Sie, dass Philadelphia zwei ls hat und zu lang ist, um in den Flughafencode zu passen, so dass sein Wert bestenfalls abgeschnitten wird. Baltimore leidet das gleiche Kürzungsschicksal. Auch die Dauer passt nicht in den zugewiesenen Platz. Für Flughäfen würden Sie normalerweise den IATA 3-Buchstaben-Code in den Tabellen speichern und eine separate Tabelle von Flughäfen haben, mit denen Sie sich verbinden können - Fremdschlüssel, referentielle Integrität, Normalisierung: all die guten Sachen. –

Antwort

3

habe gerade versucht es auf SQL Server, TIMESTAMP Format in einer Tabelle eindeutig sein muss. Ich wusste nicht, dass du auf Oracle bist. Dies funktioniert auf SQL Server:

CREATE TABLE FLIGHT_SA 
(FLIGHT_NUMBER CHAR(10) PRIMARY KEY, 
AIRCRAFT_ID CHAR(15) NOT NULL, 
TRANSFER_FLIGHT_NUMBER CHAR(25) NOT NULL, 
DEPARTURE_DATE_TIME DATETIME, 
ARRIVAL_DATE_TIME DATETIME, 
DEPARTURE_AIRPORT_CODE CHAR(30), 
TRANSFER_AIRPORT_CODE CHAR(30), 
ARRIVAL_AIRPORT_CODE CHAR(30), 
DURATION CHAR(10)); 

INSERT INTO FLIGHT_SA 
VALUES 
('MS986','B773','MS798','2016-06-05 10:45:01','2016-06-05 12:45:01','Baltimore,MD (BWI)','Philadephia,PA (PHL)','Miami,FL (MIA)','5 HOURS'); 

Und für Oracle, müssen Sie die To_date Funktion (http://www.techonthenet.com/oracle/questions/insert_date.php):

CREATE TABLE FLIGHT_SA 
(FLIGHT_NUMBER CHAR(10) PRIMARY KEY, 
AIRCRAFT_ID CHAR(15) NOT NULL, 
TRANSFER_FLIGHT_NUMBER CHAR(25) NOT NULL, 
DEPARTURE_DATE_TIME DATETIME, 
ARRIVAL_DATE_TIME DATETIME, 
DEPARTURE_AIRPORT_CODE CHAR(30), 
TRANSFER_AIRPORT_CODE CHAR(30), 
ARRIVAL_AIRPORT_CODE CHAR(30), 
DURATION CHAR(10)); 

INSERT INTO FLIGHT_SA 
VALUES 
('MS986','B773','MS798',TO_DATE('2016-06-05 10:45:01','yyyy/mm/dd hh24:mi:ss'),TO_DATE('2016-06-05 12:45:01','yyyy/mm/dd hh24:mi:ss'),'Baltimore,MD (BWI)','Philadephia,PA (PHL)','Miami,FL (MIA)','5 HOURS'); 

Diese funktionieren sollte. Ich habe auch die Länge der Variablen deiner Charaktere korrigiert. Pass auf dich auf, Oracle wird deine Zeichenfolge abschneiden, wenn du nicht genug Platz gibst.

+0

Sorry, ich bin mit Oracle sqlplus – kdawge

+0

Es hat mir ungültige Datentyp Linie 5 – kdawge

+0

dann nur Datum Versuchen Sie sagen, ich bin nicht sicher, wie ich SQL Server – BD01

Verwandte Themen