【发布时间】:2017-12-25 22:09:54
【问题描述】:
我正在尝试在插入之前创建一个 MySQL 触发器:
BEGIN
SET NEW.order_date = STR_TO_DATE(NEW.order_date, '%d/%m/%Y');
END
但是当我导入包含“05/07/2017”等记录的 .csv 时,触发器只导入 NULL
知道如何解决这个问题吗?
【问题讨论】:
-
在触发这一点时,
order_date已经被强制转换为date。它不再是初始字符串形式。 -
因此,如果我将列 order_date 更改为 VarChar 并创建新列,例如 order_date_fixed,其格式为 DATE,并且触发器更改为:BEGIN SET NEW.order_date = STR_TO_DATE(NEW.order_date_fixed, '%d /%我的'); END 它会按预期工作吗?
-
只需在触发器中省略转换即可。
-
@FinrodFElagund 您的字段方向错误。正如您所描述的,您实际上需要执行
SET NEW.order_date_fixed = STR_TO_DATE(NEW.order_date, '%d/%m/%Y')。并不是说这是一个很好的解决方案,因为它可能会导致其中一个日期稍后更新但另一个日期不会更新的问题,并且您最终会遇到潜在的逻辑问题。我更喜欢在导入之前修复 CSV 文件的选项。
标签: mysql sql date triggers format