更改列在SQL中键入

时间:2012-06-12 09:08:40

标签: mysql sql

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

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

由于

4 个答案:

答案 0 :(得分:6)

我这样做的方式:

(1)添加新栏目:

ALTER TABLE yourtable 
ADD COLUMN `new_date` DATE NULL AFTER `views`; 

(2)更新新列

UPDATE yourtable SET new_date = old_date;

处理old_date中的数据格式。如果格式不是yyyy-mm-dd,则您可能必须STR_TO_DATE或此UPDATE - 语句中的某些字符串替换符合您的目的。

示例:

如果您的数据如下所示:mmmm dd, yyyy, hh:mm(p.e。May 17, 2012, 8:36 pm),您可以像这样更新:

UPDATE yourtable
SET new_date = STR_TO_DATE(old_date, "%M %e, %Y");

STR_TO_DATE基本上将工程师字符串数据反向转换为日期值。

(3)删除旧列

ALTER TABLE yourtable 
DROP COLUMN `old_date`; 

(4)重命名新列

ALTER TABLE yourtable 
CHANGE `new_date` `old_date` DATE NULL; 

完成!

答案 1 :(得分:1)

怎么样:

1)添加具有正确类型的新列

2)使用解析日期更新新列

3)删除旧列

更新以填充日期模式解析要求:

SELECT STR_TO_DATE('May 17, 2012, 8:36 pm','%M %d, %Y');

答案 2 :(得分:0)

使用此查询:

ALTER TABLE tablename MODIFY COLUMNNAME Datatype

e.g。

ALTER TABLE Users MODIFY RegisterDate DateTime

答案 3 :(得分:0)

添加包含所需数据类型的新列,然后运行UPDATE查询以将数据从旧列复制到新列。然后删除旧列。

请注意,您可能必须使用CONVERT函数将日期字符串转换为日期时间。