mySql Insert X Select Y завершается неудачно, в то время как Select Y завершается успешно, а Insert X "literal Y" также успешно - PullRequest
3 голосов
/ 27 сентября 2019

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')
              ));
...