Как правильно вставить дату и время в рабочую среду mysql? - PullRequest
0 голосов
/ 18 июня 2020

Это моя таблица ПОЛЕТОВ, когда я вставляю в нее, я получаю сообщение об ошибке, но я попытался посмотреть в Интернете, я не вижу ничего неправильного в моем коде.


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 ,hibited_city, Расчетное_время_выпуска, номер_полета, эксплуатационные_выпуски

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

1 Ответ

0 голосов
/ 19 июня 2020

Я попытался запустить это в SQL Fiddle и обнаружил, что ваши форматы даты недействительны, что вызывает ошибку, а STR_TO_DATE() не нужен и шумит.

Кроме того, вы не должны передавать явные значения для столбцов auto_increment, потому что они предназначены для автоматического увеличения. Мне показалось, что это сработало, даже если я прошел 1, но совет состоит в том, чтобы пройти null и позволить движку назначить.

Эта измененная схема строит / работает нормально :

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 is действительно an 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'
);
...