Tắt NO_ZERO_DATE
Chế độ SQL:
set @old_sql_mode = @@sql_mode;
set sql_mode = '';
Chạy tuyên bố của bạn:
UPDATE Estimates
SET CreatedDate = NULLIF(str_to_date(CreatedDate, '%c/%e/%y'), FROM_DAYS(0))
Sau đó, bật các chế độ SQL gốc:
set sql_mode = @old_sql_mode;
Đang tắt NO_ZERO_DATE
chế độ sẽ làm cho STR_TO_DATE
ngày trả về 0 0000-00-00
đối với chuỗi ngày không hợp lệ, giá trị tương tự được trả về bởi FROM_DAYS(0)
. Vì vậy, NULLIF
sẽ chuyển đổi ngày tháng 0 thành NULL
.
Câu trả lời này rất hữu ích.