更改列在SQL中键入

Zoh*_*han 1 mysql sql

嘿,我有一个SQL表,其中有一列用于存储日期,但日期列的类型为varchar.我想将类型更改为日期,但我不希望实际数据在该列中丢失.我怎样才能做到这一点.

手动备份表然后输入每个条目?或者还有其他一些很酷的方法吗?实际上数据是巨大的

谢谢

Bjo*_*ern 6

我这样做的方式:

(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)

完成!