#mysql #date #type-conversion
#mysql #Дата #преобразование типов
Вопрос:
Я работаю над проектом, который, по-видимому, был создан полным новичком. Дата сохраняется в varchar
столбце в формате ’20 января 2010′. Мне нужно преобразовать этот столбец в DATE
или DATETIME
, но когда я делаю это (при резервной копии), значения становятся 0000-00-00
.
Я попытался преобразовать значения в правильный формат перед изменением типа столбца, используя функции str_to_date()
и DATE()
, но обе сообщают о недопустимом формате строки. Возможно ли преобразовать эти данные в допустимый формат даты?
Ответ №1:
Используйте STR_TO_DATE
и обновите этот столбец правильным значением даты, используя текущую текстовую дату.
UPDATE yourTable
SET new_date = STR_TO_DATE(old_date, '%b %e, %Y');
Я предполагаю, что либо вы используете неправильную маску формата и / или у некоторых ваших текстовых дат есть проблемы. Вот краткая демонстрация, показывающая, что вышеуказанная логика работает.
ДЕМОНСТРАЦИЯ
Комментарии:
1. Ах. Я подумал, что вам нужно предоставить формат, который вы хотите. Ваш код работает. Спасибо
Ответ №2:
Используйте это вместо.
UPDATE table_name
SET DATES = DATE_FORMAT(DATES, '%Y-%m-%d');
Я предлагаю использовать другой столбец для хранения обновленного значения даты. То есть: update tb_date set new_date_column = DATE_FORMAT(date_column, '%y-%m-%d');
Проверьте это, надеюсь, у вас это сработает.