gpt4 book ai didi

mysql - 触发器无法将 'm/d/YYY' 转换为 DATE 类型。包括复制品

转载 作者:行者123 更新时间:2023-11-29 18:02:14 26 4
gpt4 key购买 nike

我将从文件中批量插入数据,并且希望能够使用 MySQL 而不是后端语言来转换数据类型。这就是我正在做的事情,但它不起作用,我无法弄清楚。谢谢!

create table t1 (TEST_DATE DATE);

DELIMITER |
create trigger t1FixDate BEFORE INSERT ON t1
FOR EACH ROW BEGIN
SET NEW.TEST_DATE=STR_TO_DATE(NEW.TEST_DATE, '%c/%e/%Y');
END; |
DELIMITER ;

insert into t1 VALUES ('9/7/2016');
//Error Code: 1292. Incorrect date value: '9/7/2016' for column 'TEST_DATE' at row 1

编辑:下面的 SQL 有效。我真的被这个难住了。触发器在类型检查之前完成吗?

create table t2 (TEST_DATE DATE);
insert into t2 VALUES (STR_TO_DATE('9/7/2016', '%c/%e/%Y'));

最佳答案

根据manual ,

The keyword BEFORE indicates the trigger action time. In this case, the trigger activates before each row inserted into the table

因此,触发器适用于已创建但尚未添加到表中的行。这意味着您的字符串已分配给数据类型为 Date 的列,此操作失败(分配了 null)。在调用该触发器之后,它会处理空值。

关于mysql - 触发器无法将 'm/d/YYY' 转换为 DATE 类型。包括复制品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com