mySql 5.6 -
OK: выбрать извлечение (YEAR_MONTH FROM STR_TO_DATE ('09 / 06/2018 чт), ...
OK: вставить в T ... буквальный результат указанного выше выбора
FAILS: Вставить в T Select Extract (YEAR_MONTH FROM STR_TO_DATE ...
с: "Усечение данных: усеченное неверное значение даты:"
Очевидно, что третий оператор не выполнен, поскольку строка даты слишком длинна для Extract.Но я озадачен, почему первое утверждение также не терпит неудачу. См .: http://sqlfiddle.com/#!9/4a8b65 и раскомментируйте строки 22-25, чтобы увидеть ошибку, которую я не понимаю.
CREATE TABLE `Transactions` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Period` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Insert into Transactions ( `Period`)
Values 201809);
--EXTRACT doesn't fail with a longer string in SELECT
SELECT
EXTRACT(YEAR_MONTH FROM STR_TO_DATE('09/05/2018 Wed', '%m/%d/%Y'));
--Insert/EXTRACT works fine with shorter string
Insert into Transactions ( `Period`)
Values(EXTRACT(YEAR_MONTH FROM
STR_TO_DATE('09/06/2018', '%m/%d/%Y')
));
--This fails, why?
Insert into Transactions ( `Period`)
Values(EXTRACT(YEAR_MONTH FROM
STR_TO_DATE('09/07/2018 Fri', '%m/%d/%Y')
));