Вы можете использовать STR_TO_DATE()
следующим образом, чтобы преобразовать ваш текст в DATE
:
STR_TO_DATE( datefield , "%d/%m/%Y" )
Если вам нужно это DATE
в определенном формате, вы можете использовать DATE_FORMAT()
.
Это, вероятно, не нужно в вашем случае, но вот пример для полноты:
DATE_FORMAT( STR_TO_DATE( datefield , "%d/%m/%Y" ) , "%Y/%m/%d" )
Таким образом, вы можете сделать это по всей таблице с помощью одного UPDATE
, чтобы заменить текущие данные переформатированными данными (сохраняя при этом тип данных):
UPDATE tableName
SET originalDate = DATE_FORMAT(STR_TO_DATE(originalDate,"%d/%m/%Y" ),"%Y/%m/%d" );
Или, если вы хотите преобразовать тип данных столбца DATE
, вы можете изменить таблицу, чтобы создать новый столбец в формате DATE
, используйте указанное выше обновление, чтобы заполнить этот столбец, удалить исходный столбец, а затем ( по желанию) переименуйте новый столбец в старое имя.
ALTER tableName
ADD modifiedDate DATE;
UPDATE tableName
SET modifiedDate = DATE_FORMAT( STR_TO_DATE( originalDate ,"%d/%m/%Y" ) ,"%Y/%m/%d" );
ALTER tableName
DROP COLUMN originalDate;
ALTER tableName
CHANGE COLUMN modifiedDate originalDate;