刚刚在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会截断你的字符串。
你得到的具体错误是什么? –
ORA-01843:不是有效的月份 – kdawge
请注意,费城有两个l,它太长而不适合机场代码,所以它的价值最好会被截断。巴尔的摩遭受同样的截断命运。即使持续时间不符合分配的空间。对于机场来说,你通常会在表格中存储国际航空运输协会3个字母的代码,并有一个单独的机场表 - 加入外键,参照完整性,规范化:所有的好东西。 –