INSERT语句中CAST()的奇怪行为

时间:2017-11-07 18:03:30

标签: mysql

我想将一堆varchar像'2015-01-08T00:00:00 + 00:00'迁移到另一个使用datetime的表。

在select语句中使用CAST()函数时,它似乎完美无缺:

SELECT CAST(field_value AS datetime) FROM table

我检索2015-01-08 00:00:00;

但是当我尝试执行INSERT语句时,我收到了这个错误:

Error Code: 1292. Truncated incorrect datetime value: '2015-01-08T00:00:00+00:00'

看起来像cast函数它没有在insert语句中工作。我正在使用的insert语句是类型:

  INSERT INTO new_table
    SELECT t.x, t2.x, CAST(t2.field_value AS datetime), t.y
    FROM table t
    LEFT JOIN table2 t2
ON t2.id = t.t2_id
    WHERE t2.field_value !='';

编辑:

link to sqlfiddle that reproduces the issue

小提琴中的SELECT语句给出了与本地(工作台和命令行)不同的结果。

尝试使用CONVERT(),我遇到了同样的问题

如何将日期字符串正确插入new_table表?

1 个答案:

答案 0 :(得分:0)

由于严格模式:

mysql error when using cast in update statement

仍然不明白为什么我在SELECT语句中没有收到任何警告。