将SQL列从VARCHAR转换为Date

时间:2014-01-23 09:10:22

标签: mysql

在我上一篇文章之后:SQL Query On Date When Type Is VARCHAR

我已决定将列从VARCHAR转换为DATE类型。

所有字段的数据都已设置为“22/01/14”。

之前有没有人这样做过。

谢谢,

斯科特

2 个答案:

答案 0 :(得分:1)

使用STR_TO_DATE()之类的:

mysql> SELECT STR_TO_DATE('22/01/14','%d/%m/%Y');
+------------------------------------+
| STR_TO_DATE('22/01/14','%d/%m/%Y') |
+------------------------------------+
| 2014-01-22                         |
+------------------------------------+
1 row in set (0.00 sec)

- 然后将其应用于UPDATE语句中。如果您要更改列类型,则直接更改它是不安全的。假设您当前的列名为str_date。然后:

  • 添加新列,例如:ALTER TABLE t ADD new_date DATE
  • 复制正确的值:UPDATE t SET new_date=STR_TO_DATE(str_date,'%d/%m/%Y')
  • 删除旧列:ALTER TABLE t DROP str_date
  • 重命名新列:ALTER TABLE t CHANGE new_date str_date DATE

答案 1 :(得分:0)

我建议您在几个sql中更改表结构,如下所示:

alter table `mytable` add `_IssueDate` DATE NOT NULL after `IssueDate`;
update `mytable` set `_IssueDate`=STR_TO_DATE(`IssueDate`, '%d/%m/%Y');
alter table `mytable` drop `IssueDate`;
alter table `mytable` change `_IssueDate` `IssueDate` DATE NOT NULL;