嘿,我有一个 SQL 表,其中有一列用于存储日期,但日期列的类型为 varchar。我想将类型更改为日期,但我不希望该列中的实际数据丢失。我怎样才能做到这一点。
手动备份表格然后输入每个条目?还是有其他很酷的方法可以做到这一点?其实数据很大
谢谢
我这样做的方式:
(1) 添加新列:
ALTER TABLE yourtable
ADD COLUMN `new_date` DATE NULL AFTER `views`;
(2) 更新新列
UPDATE yourtable SET new_date = old_date;
注意old_date
. 如果它不是 formatted yyyy-mm-dd
,您可能必须在此-statement中进行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");
STR_TO_DATE
基本上逆向工程师将字符串数据转换为日期值。
(3) 删除旧列
ALTER TABLE yourtable
DROP COLUMN `old_date`;
(4) 重命名新列
ALTER TABLE yourtable
CHANGE `new_date` `old_date` DATE NULL;
完毕!
关于什么:
1)添加具有正确类型的新列
2)用解析的日期更新你的新列
3)删除旧列
更新以填充日期模式解析要求:
SELECT STR_TO_DATE('May 17, 2012, 8:36 pm','%M %d, %Y');
使用此查询:
ALTER TABLE tablename MODIFY COLUMNNAME Datatype
例如
ALTER TABLE Users MODIFY RegisterDate DateTime
添加具有所需数据类型的新列,然后运行 UPDATE 查询以将数据从旧列复制到新列。然后删除旧列。
请注意,您可能必须使用 CONVERT 函数将日期字符串转换为日期时间。