嘿,我有一个SQL表,其中有一列用于存储日期,但日期列的类型为varchar。我想将类型更改为日期,但我不希望实际数据在该列中丢失。我怎样才能做到这一点。
手动备份表格然后输入每个条目?或者还有其他一些很酷的方法吗?实际上数据很大
由于
答案 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函数将日期字符串转换为日期时间。