0

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

显示为:2012 年 11 月 22 日

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

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

谢谢

4

3 回答 3

6

为了安全起见,我个人会添加一个新列,传输数据,然后删除

update `table` set `new_col` = str_to_date( `old_col`, '%m/%d/%Y' ) ;

在删除列之前检查数据是否正常。

于 2013-07-19T23:35:14.330 回答
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;
于 2013-07-19T23:29:40.197 回答
0

使用该STR_TO_DATE功能。

创建一个正确数据类型的新列,使用函数将字符串从旧列移到新列中STR_TO_DATE,然后删除旧列。

UPDATE table SET new_col = STR_TO_DATE(old_col);

MySQL STR_TO_DATE 参考

于 2013-07-19T23:35:57.083 回答