Почему я могу вставить строку в поле даты и времени в MySQL

#mysql #datetime #sql-insert

Вопрос:

У меня есть таблица, созданная с помощью приведенного ниже кода.

 CREATE TABLE actor (
   actor_id  smallint(5)  NOT NULL PRIMARY KEY,
   first_name  varchar(45) NOT NULL,
   last_name  varchar(45) NOT NULL,
   last_update  DATETIME NOT NULL)
 

И я успешно вставляю две записи, используя приведенный ниже код.

 insert ignore into actor
values (1, "PENELOPE", "GUINESS", "2006-02-15 12:34:33"),
       (2, "NICK", "WAHLBERG", "2006-02-15 12:34:33")
 

Однако мне интересно, почему мне не нужно изменять тип последнего значения в каждой записи со строки на дату и время, прежде чем вставлять его в таблицу.
И когда я пытаюсь заменить "2006-02-15 12:34:33" на str_to_date("2006-02-15 12:34:33", "%Y-%m-%d %H:%i:%s") , вставка все еще работает.

Комментарии:

1. MySQL автоматически преобразует типы при необходимости.

2.Значение '2006-02-15 12:34:33' является допустимым литералом даты и времени.

3. STR_TO_DATE() позволяет вам переформатировать дату. Если вам случится переформатировать его в форму, которая будет признана допустимой DATETIME (как в вашем примере), вы можете использовать его в качестве DATETIME значения. Однако, как указывали другие, в этом нет необходимости, если у вас уже есть данные в правильном (строковом) формате.