Я не увидел полностью-MySQL ответ. :)
Предполагая, что ваше поле "datetime" называется "dt", вы можете изменить его на правильный тип (DATETIME
), сначала переформатировав строки во что-то, что MySQL распознает как строковый формат DATETIME
, а затем изменение типа столбца. Имейте под рукой резервную копию на случай, если вы или я опечатаете ниже.
SET sql_mode=ansi; -- for || operator
UPDATE tbl SET dt = LEFT(SUBSTRING_INDEX(dt, ' ', -2), 4) -- YYYY
|| '-'
|| LPAD(FIELD(SUBSTRING_INDEX(dt, ' ', 1), -- MM
'January', 'February', 'March',
'April', 'May', 'June', 'July',
'August', 'September', 'October',
'November', 'December'),
2, '0')
|| '-'
|| LPAD(SUBSTRING_INDEX( -- DD
SUBSTRING_INDEX(dt, ',', 1),
' ', -1), 2, '0')
|| ' '
|| SUBSTRING_INDEX(dt, ' ', -1); -- hh:mm:ss
ALTER TABLE tbl CHANGE dt dt DATETIME;