2016-04-14 30 views
-2

这是我创建的表和insert声明。SQL无效月

这有什么问题?

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

你得到的具体错误是什么? –

+0

ORA-01843:不是有效的月份 – kdawge

+2

请注意,费城有两个l,它太长而不适合机场代码,所以它的价值最好会被截断。巴尔的摩遭受同样的截断命运。即使持续时间不符合分配的空间。对于机场来说,你通常会在表格中存储国际航空运输协会3个字母的代码,并有一个单独的机场表 - 加入外键,参照完整性,规范化:所有的好东西。 –

回答

3

刚刚在sql server上试过,TIMESTAMP格式在表中必须是唯一的。我不知道你在Oracle上。这适用SQL服务器上:

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'); 

而对于Oracle,您需要To_date功能(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'); 

这应该工作。我也纠正了你字符变量的长度。注意,如果你没有给它足够的空间,Oracle会截断你的字符串。

+0

对不起,我正在使用oracle sqlplus – kdawge

+0

这是告诉我无效的数据类型第5行 – kdawge

+0

尝试然后只是日期,我不知道,因为我使用sql服务器 – BD01