我将日期存储为
varchar(256) latin1_swedish_ci
显示为:2012 年 11 月 22 日
现在我想将现有数据和列转换为 DATE
在 SQL 中执行此操作的最简单方法是什么
谢谢
为了安全起见,我个人会添加一个新列,传输数据,然后删除
update `table` set `new_col` = str_to_date( `old_col`, '%m/%d/%Y' ) ;
在删除列之前检查数据是否正常。
编辑以转换现有数据使用:
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;
使用该STR_TO_DATE
功能。
创建一个正确数据类型的新列,使用函数将字符串从旧列移到新列中STR_TO_DATE
,然后删除旧列。
UPDATE table SET new_col = STR_TO_DATE(old_col);