Рейтинг:
8
phil.o
Пожалуйста, смотрите Решение 1 для того, как вы должны относиться к значениям datetime в будущем.
Теперь, для вашего текущего выпуска, существует несоответствие между указанными вами входными данными ('03/28/1990', т. е. месяцем/днем/годом) и строкой формата, которую вы передаете в файл. DATE_FORMAT
функция ('%d%m%Y', т. е. день/месяц/год).
Рейтинг:
25
OriginalGriff
В принципе, нет.
Никогда не храните даты в строках - вместо этого используйте столбцы DATETIME, DATE или TIMESTAMP и преобразуйте даты в них на языке презентации (где вы можете работать с различными форматами ввода данных пользователем).
Использование строк "легко", но оно оставляет вас широко открытыми для серьезных проблем позже - например, дата в формате ISO: 2020-04-27, или американский формат: 04-27-2020, или просто "Привет", если вы еще не проверили свои пользовательские данные.
Измените свою БД и храните данные в соответствующих типах данных - это может показаться более громоздким, но позже это сэкономит много горя.
Member 11776570
ладно, я понял вашу точку зрения, но мы не можем изменить тип данных, его клиентскую базу данных. Поэтому мы должны преобразовать его в datetime и сохранить эти данные в другой базе данных, где это тип данных date time.
Рейтинг:
12
Wendelius
Я полностью согласен с OriginalGriff, если это возможно, храните даты, используя соответствующий тип данных. Не только хранение более легко, но и вычисление, форматирование и т. д. легко сделать, когда базовый тип-дата.
Сказав это, в случае, если вы абсолютно не в состоянии изменить тип, вы должны быть в состоянии использовать
str_to_date(dob, '%m/%d/%Y')
Для получения дополнительной информации см.
MySQL :: MySQL 8.0 справочное руководство :: 12.6 функции даты и времени[
^]
Member 11776570
Спасибо, это действительно работает. Большое спасибо. Я просто застрял в нем. Я уже работаю слишком много часов. Спасибо, приятель.
Member 11776570
Эта ошибка происходит сейчас
Заданное значение типа String из источника данных не может быть преобразовано в тип datetime указанного целевого столбца.
когда я использую это
DATE_FORMAT(STR_TO_DATE(доб, '%м/%Д/%Г'),'%М%Е%С')
чтобы сохранить его в столбце datetime datatype.
Любое предложение по этому поводу.
Wendelius
Почему вы преобразуете его в строку? Насколько я вижу, вам не нужен DATE_FORMAT. Просто попробуйте что-нибудь вроде
Вставить в MyTable (....)
Выберите STR_TO_DATE(dob, '%m/%d/%Y'),
...
ОТ...