Я знаю, что этот вопрос очень похож на вопрос, размещенный здесь .Но я не могу понять, почему я получаю эту ошибку.Синтаксис этого запроса:
update schema.table set date_field = str_to_date(date_field, '%m/%d/%Y') where str_to_date(date_field, '%Y-%m-%d') is null;
Здесь указано условие where, чтобы убедиться, что оно не изменяет даты, которые уже правильно отформатированы.Выдает эту ошибку:
Error Code: 1411. Incorrect datetime value: '01/27/1989' for function str_to_date
Я могу выполнить следующий запрос без проблем или ошибок, вот как я тестирую, прежде чем вносить изменения:
select row_id, date_field, str_to_date(date_field, '%m/%d/%Y'), str_to_date(date_field, '%Y-%m-%d') from schema.table;
Эта ошибка страннаяпотому что при выполнении этого последнего оператора выбора, если есть неправильный или неожиданный формат, str_to_date
просто вернет ноль.Я также использовал этот же синтаксис (без предложения where) для изменения форматов времени, и проблем не было.Если формат был неожиданным или неправильным, он просто обновил бы это поле значением null
.Я не знаю, что случилось с этой ошибкой.