在我上一篇文章之后:SQL Query On Date When Type Is VARCHAR
我已决定将列从VARCHAR
转换为DATE
类型。
所有字段的数据都已设置为“22/01/14”。
之前有没有人这样做过。
谢谢,
斯科特
答案 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;