MySQL触发器STR_TO_DATE(NEW.invoice_date,'%d /%m /%Y')

时间:2017-07-20 09:34:59

标签: mysql sql date triggers format

我试图在插入之前创建一个MySQL触发器:

BEGIN
    SET NEW.order_date = STR_TO_DATE(NEW.order_date, '%d/%m/%Y');
END

但是当我导入包含“05/07/2017”等记录的.csv时,触发器只导入NULL

我知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在搜索时,这似乎是一个在不同地方被问过几次的问题,但我找不到解释原因的方法。

正如我在上面的评论中所提到的那样,触发过程太迟,无法正确转换数据。

为了让触发触发器,必须将数据转换为适当的数据类型以插入表中。

因此,在将数据传递给str_to_date()时,您只能使用强制date字段,而不是初始字符串。

有两种方法可以解决这个问题:

  1. 在导入
  2. 之前将日期格式修复到文件中
  3. 使用临时varchar字段导入,然后使用触发器将其转换为date字段