Mysql — Измените подробный формат даты на Y-m-d

#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');

Проверьте это, надеюсь, у вас это сработает.