将现有数据varchar和列转换为DATE

时间:2013-07-19 23:27:17

标签: mysql sql

我将日期存储为
varchar(256)latin1_swedish_ci

显示为:11/22/2012

现在我想将现有数据和列转换为DATE

在SQL

中执行此操作的最简单方法是什么

感谢

3 个答案:

答案 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')

来源:Convert String to Date

您可能需要创建临时表来保存转换数据:

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);

MySQL STR_TO_DATE Reference