Преобразование столбца varchar в date в mysql на уровне базы данных

у меня одна колонка date1 что это тип varchar тип Я хочу, чтобы эта колонка date тип. Я попытался изменить поле, но вся дата преобразуется в 0000-00-00. формат:dd-mm-yyyy а в тип varchar.

как я могу преобразовать тот же формат даты, но с форматом даты, используя sql-запросы или аналогичные, но на уровне базы данных ?

3 ответов


UPDATE `table`
SET `column` = str_to_date( `column`, '%d-%m-%Y' );

подробнее о STR_TO_DATE


другие ответы здесь рискованны, потому что, если они пойдут не так, вы потеряете свои данные. Более безопасный способ сделать это-создать новое поле в базе данных в формате даты (или DATETIME, если вам также нужно время), а затем запустить запрос типа

UPDATE `table` SET `my_new_date_field` = STR_TO_DATE( `my_old_data_field`, '%d/%m/%Y');

таким образом, если %d/%m/%Y немного не так, вы не потеряете свои данные.

Как только вы будете счастливы, вы можете удалить старое поле данных и переименовать новое.


использовать STR_TO_DATE функция MySQL

сначала вам нужно будет обновить значение в формате даты.

UPDATE `tbl` SET `date1` = STR_TO_DATE(`date1`, '%d-%m-%Y') WHERE 1=1

затем преобразуйте поле в date.

самое главное не забудьте вставить дату в формате Y-m-d, после этого.