#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
значения. Однако, как указывали другие, в этом нет необходимости, если у вас уже есть данные в правильном (строковом) формате.