我试图将不是有效日期格式的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
无效的行,而不会抛出错误。
答案 0 :(得分:2)
您在 STR_TO_DATE
STR_TO_DATE(`date_string`,'%d-%m-%Y')
相反,它应该是
STR_TO_DATE(`date_string`,'%Y-%m-%d')