MySQL无法插入WHERE STR_TO_DATE IS NULL

时间:2017-10-19 17:14:58

标签: mysql sql sql-insert

我试图将不是有效日期格式的VARCHARs字符串插入到另一个表中,它们也存储为VARCHAR。我正在尝试使用STR_TO_DATE来完成此操作,如果字符串的格式无效,则应该返回NULL:

    INSERT INTO DateErrors
    SELECT `row_id`,`date_string`
    FROM `source_table`
    WHERE STR_TO_DATE(`date_string`,'%d-%m-%Y') IS NULL

对于具有无效日期格式的字符串,会抛出错误: Error Code: 1411. Incorrect datetime value: 'some random string that isnt a date' for function str_to_date。我希望将这些字符串值插入到DateErrors中,而不是抛出此错误。

但是,只运行SELECT查询会返回date_string无效的行,而不会抛出错误。

1 个答案:

答案 0 :(得分:2)

您在 STR_TO_DATE

中为日期字符串指定了错误的格式
STR_TO_DATE(`date_string`,'%d-%m-%Y')

相反,它应该是

STR_TO_DATE(`date_string`,'%Y-%m-%d')