У меня та же проблема, что и в этом вопросе - MySQL Невозможно вставить WHERE STR_TO_DATE IS NULL .
Я хочу перенести даты из одной базы данных в другую.Даты в исходной базе данных хранятся как varchars и не всегда действительны - например, иногда есть значение типа «nb» или какая-то другая строка, иногда они равны нулю.Использование str_to_date () в операторе SELECT работает нормально - если предоставленная строка не соответствует предоставленному формату, она возвращает ноль.Это поведение, которое я хочу, но в операторе INSERT.К сожалению, при попытке сделать это, я получаю следующую ошибку:
SQL Error (1411): Incorrect datetime value: 'n.b.' for function str_to_date
Есть ли у вас какие-либо советы, чтобы избежать этого поведения?
Я использую MariaDB, если это имеет значение.
РЕДАКТИРОВАТЬ 1: Это мое заявление вставки:
insert into person
(id, firstname, lastname, date_of_birth, place_of_birth, gender, old_id)
select
vm.person_id,
IFNULL(wv.vorname, '') as firstname,
IFNULL(wv.NAME, '') as lastname,
STR_TO_DATE(wv.geburtsdatum, '%e.%c.%Y') as date_of_birth,
null as place_of_birth,
case
when wv.anrede = 'Herr' then 'm'
when wv.anrede = 'Frau' then 'w'
else 'x'
end as gender,
vm.old_id
from b.helper_table vm
join a.orig_table wv
on vm.old_id = wv.id;