0
我的最后一个职位后:SQL Query On Date When Type Is VARCHAR转换SQL列从VARCHAR迄今为止
我已经决定我要去从VARCHAR
列转换为DATE
类型。
所有的字段都有像“22/01/14”这样的数据设置。
有没有人做过此事。
感谢,
斯科特
我的最后一个职位后:SQL Query On Date When Type Is VARCHAR转换SQL列从VARCHAR迄今为止
我已经决定我要去从VARCHAR
列转换为DATE
类型。
所有的字段都有像“22/01/14”这样的数据设置。
有没有人做过此事。
感谢,
斯科特
使用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
我建议你换台结构在几个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;
你尝试过什么吗? –
执行此操作的一种方法是创建正确数据类型的新列并转换数据,然后删除旧列。 –
是的,这正是我想要做的......创建一个名为'CopyField1'的新字段,然后将数据转换为正确的'data'类型... 删除旧字段,然后将'CopyField1'重命名为正确的名称... :-) – WebDevB