Ba bước mà @Arkain đề cập sẽ có sự trợ giúp của hàm STR_TO_DATE
-- add the new column
ALTER TABLE `my_table` ADD COLUMN `date_time` DATETIME;
-- update the new column with the help of the function STR_TO_DATE
UPDATE `my_table` SET `date_time` = STR_TO_DATE(`_time`, '%Y%m%d%H%i');
-- drop the old column
ALTER TABLE `my_table` DROP COLUMN `_time`;
Bạn có thể tìm thấy danh sách đầy đủ các từ định nghĩa cho STR_TO_DATE tại DATE_FORMAT , đây là một đoạn trích với những người tôi đã sử dụng:
%d Day of the month, numeric (00..31)
%H Hour (00..23)
%i Minutes, numeric (00..59)
%m Month, numeric (00..12)
%Y Year, numeric, four digits
Nếu cột mới phải có thuộc tính NOT NOLL, một cách có thể là đặt chế độ sql trước khi hoạt động thành '' và đặt lại sql_mode sau:
SET @old_mode = @@sql_mode;
SET @@sql_mode = ''; -- permits zero values in DATETIME columns
ALTER TABLE `my_table` ADD COLUMN `date_time` DATETIME NOT NULL;
UPDATE `my_table` SET `date_time` = STR_TO_DATE(`_time`, '%Y%m%d%H%i');
ALTER TABLE `my_table` DROP COLUMN `_time`;
SET @@sql_mode = @old_mode;