嘿,我有一个SQL表,其中有一列用于存储日期,但日期列的类型为varchar.我想将类型更改为日期,但我不希望实际数据在该列中丢失.我怎样才能做到这一点.
手动备份表然后输入每个条目?或者还有其他一些很酷的方法吗?实际上数据是巨大的
谢谢
我这样做的方式:
(1)添加新栏目:
ALTER TABLE yourtable
ADD COLUMN `new_date` DATE NULL AFTER `views`;
Run Code Online (Sandbox Code Playgroud)
(2)更新新列
UPDATE yourtable SET new_date = old_date;
Run Code Online (Sandbox Code Playgroud)
处理数据格式old_date.如果没有格式化yyyy-mm-dd,您可能必须STR_TO_DATE在此UPDATE声明中使用或一些字符串替换,以符合您的目的.
例:
如果您的数据如下所示:mmmm dd, yyyy, hh:mm(pe May 17, 2012, 8:36 pm),您可以像这样更新:
UPDATE yourtable
SET new_date = STR_TO_DATE(old_date, "%M %e, %Y");
Run Code Online (Sandbox Code Playgroud)
STR_TO_DATE 基本上反向工程师将数据串数据转换为日期值
(3)删除旧列
ALTER TABLE yourtable
DROP COLUMN `old_date`;
Run Code Online (Sandbox Code Playgroud)
(4)重命名新列
ALTER TABLE yourtable
CHANGE `new_date` `old_date` DATE NULL;
Run Code Online (Sandbox Code Playgroud)
完成!