mysql - mySql Insert X Select Y 失败,而 Select Y 成功并且 Insert X "literal Y" 也成功
问题描述
mySql 5.6 -
OK: Select Extract(YEAR_MONTH FROM STR_TO_DATE('09/06/2018 Thu',...
OK: Insert into T ...literal result of above select
FAILS: Insert into T Select Extract(YEAR_MONTH FROM STR_TO_DATE .. .
with:"数据截断:截断不正确的日期值:"
显然,第三条语句失败是因为日期字符串对于 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')
));
解决方案
推荐阅读
- flutter - 在 Flutter 中创建响应式联盟板
- python - 如何在 vs 代码中使用 sysargv 模块?
- protocol-buffers - 通过谷歌协议缓冲区反序列化数据时出错
- python - 如何从不同的 python 文件导入各种数据框?
- python - 为什么深度优先搜索时我的 for 循环没有中断
- azure - 将 Azure Logic App 与本地 SMTP 中继集成以发送电子邮件
- google-cloud-platform - Cloud Memorystore Redis CPU利用率高
- c# - 如果前景绑定到属性,我可以以某种方式为文本块的前景颜色设置动画吗?
- reporting-services - 每隔一行 ssrs 报告缺少单元格的矩阵
- amazon-web-services - 如何从用 pyspark 编写的胶水 ETL 作业中保存 S3 中的机器学习模型(Kmeans)?