我将日期存储为
varchar(256)latin1_swedish_ci
显示为:11/22/2012
现在我想将现有数据和列转换为DATE
在SQL
中执行此操作的最简单方法是什么感谢
答案 0 :(得分:6)
为了安全起见,我个人会添加一个新列,传输数据然后删除
update `table` set `new_col` = str_to_date( `old_col`, '%m/%d/%Y' ) ;
删除列之前检查数据是否正常。
答案 1 :(得分:1)
修改以转换现有数据使用:
STR_TO_DATE(t.datestring, '%d/%m/%Y')
您可能需要创建临时表来保存转换数据:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
然后你可以截断表:
TRUNCATE [TABLE] tbl_name
然后您可以更改列数据类型:
ALTER TABLE tablename MODIFY columnname DATE;
然后你可以从临时表重新加载:
INSERT INTO table
SELECT temptable.column1, temptable.column2 ... temptable.columnN
FROM temptable;
答案 2 :(得分:0)
使用STR_TO_DATE
功能。
创建一个正确数据类型的新列,使用STR_TO_DATE
函数将旧列中的字符串移动到新列中,然后删除旧列。
UPDATE table SET new_col = STR_TO_DATE(old_col);