在 mysql workbench 中插入日期时间的正确方法是什么?
What is the right way of inserting datetime in mysql workbench?
这是我的 FLIGHT table 当我插入它时出现错误,但我尝试在线查看,我没有发现我的代码有任何问题。
CREATE TABLE FLIGHT
(
ID INT NOT NULL AUTO_INCREMENT,
FLIGHT_NUMBER VARCHAR(20) NOT NULL,
OPERATING_AIRLINES VARCHAR(20) NOT NULL,
DEPARTURE_CITY VARCHAR(20) NOT NULL,
ARRIVAL_CITY VARCHAR(20) NOT NULL,
DATE_OF_DEPARTURE DATE NOT NULL,
ESTIMATED_DEPARTURE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
)
id,arrival_city,date_of_departure,departure_city,estimated_departure_time,flight_number,operating_airlines
insert into flight values(9,'SW3','South West','NYC',
'DAL',STR_TO_DATE('06/20/2020 10:14:07', '%m-%d-%Y %H:%i:%s'),'06/20/2020 10:14:07')
当我突出显示并执行以上几行时,
我在下面收到此错误:
'NYC',STR_TO_DATE('06-19-2020', '%m-%d-%Y'),'06-19-2020 03:14:07') Error Code: 1292. Incorrect datetime value: 'American Airlines' for column 'date_of_departure' at row 1 0.016 sec
我在 SQL Fiddle 中试过 运行 这个,发现你的日期格式无效,导致错误,而且 STR_TO_DATE()
是不必要的和嘈杂的。
此外,您不应该为 auto_increment
列传递显式值,因为它们本来是要自动递增的。即使我确实通过了 1
,它似乎对我有用,但建议是通过 null
并让引擎分配。
此修改后的架构 builds/runs just fine:
CREATE TABLE FLIGHT
(
ID INT NOT NULL AUTO_INCREMENT,
FLIGHT_NUMBER VARCHAR(20) NOT NULL,
OPERATING_AIRLINES VARCHAR(20) NOT NULL,
DEPARTURE_CITY VARCHAR(20) NOT NULL,
ARRIVAL_CITY VARCHAR(20) NOT NULL,
DATE_OF_DEPARTURE DATE NOT NULL,
ESTIMATED_DEPARTURE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
);
insert into flight
values (
null,
'SW3',
'South West',
'NYC',
'DAL',
'2020-06-20',
'2020-06-20 10:14:07'
);
或者,您说下面的方法有效,尽管我仍然不明白为什么它允许您传递 id
的显式值 really auto_increment
字段,但是嘿...
为了完全避免指定 id
(null
或不指定),您可以使用下面的内容,但在每个列或 values
集中没有第一行。
insert into flight (
id,
flight_number,
operating_airlines,
departure_city,
arrival_city,
date_of_departure,
estimated_departure_time
)
values (
1,
'SW3',
'South West',
'NYC',
'DAL',
'2020-06-20 10:14:07',
'2020-06-20 10:14:07'
);
这是我的 FLIGHT table 当我插入它时出现错误,但我尝试在线查看,我没有发现我的代码有任何问题。
CREATE TABLE FLIGHT
(
ID INT NOT NULL AUTO_INCREMENT,
FLIGHT_NUMBER VARCHAR(20) NOT NULL,
OPERATING_AIRLINES VARCHAR(20) NOT NULL,
DEPARTURE_CITY VARCHAR(20) NOT NULL,
ARRIVAL_CITY VARCHAR(20) NOT NULL,
DATE_OF_DEPARTURE DATE NOT NULL,
ESTIMATED_DEPARTURE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
)
id,arrival_city,date_of_departure,departure_city,estimated_departure_time,flight_number,operating_airlines
insert into flight values(9,'SW3','South West','NYC',
'DAL',STR_TO_DATE('06/20/2020 10:14:07', '%m-%d-%Y %H:%i:%s'),'06/20/2020 10:14:07')
当我突出显示并执行以上几行时, 我在下面收到此错误:
'NYC',STR_TO_DATE('06-19-2020', '%m-%d-%Y'),'06-19-2020 03:14:07') Error Code: 1292. Incorrect datetime value: 'American Airlines' for column 'date_of_departure' at row 1 0.016 sec
我在 SQL Fiddle 中试过 运行 这个,发现你的日期格式无效,导致错误,而且 STR_TO_DATE()
是不必要的和嘈杂的。
此外,您不应该为 auto_increment
列传递显式值,因为它们本来是要自动递增的。即使我确实通过了 1
,它似乎对我有用,但建议是通过 null
并让引擎分配。
此修改后的架构 builds/runs just fine:
CREATE TABLE FLIGHT
(
ID INT NOT NULL AUTO_INCREMENT,
FLIGHT_NUMBER VARCHAR(20) NOT NULL,
OPERATING_AIRLINES VARCHAR(20) NOT NULL,
DEPARTURE_CITY VARCHAR(20) NOT NULL,
ARRIVAL_CITY VARCHAR(20) NOT NULL,
DATE_OF_DEPARTURE DATE NOT NULL,
ESTIMATED_DEPARTURE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
);
insert into flight
values (
null,
'SW3',
'South West',
'NYC',
'DAL',
'2020-06-20',
'2020-06-20 10:14:07'
);
或者,您说下面的方法有效,尽管我仍然不明白为什么它允许您传递 id
的显式值 really auto_increment
字段,但是嘿...
为了完全避免指定 id
(null
或不指定),您可以使用下面的内容,但在每个列或 values
集中没有第一行。
insert into flight (
id,
flight_number,
operating_airlines,
departure_city,
arrival_city,
date_of_departure,
estimated_departure_time
)
values (
1,
'SW3',
'South West',
'NYC',
'DAL',
'2020-06-20 10:14:07',
'2020-06-20 10:14:07'
);