2014-01-23 3 views
0

После моего последнего поста: SQL Query On Date When Type Is VARCHARПреобразование SQL Column От VARCHAR до Дата

Я решил, что я собираюсь преобразовать столбец из VARCHAR к DATE типа.

Все поля уже имеют набор данных типа «22/01/14».

Кто-нибудь сделал это раньше.

Спасибо,

Скотт

+0

Вы еще что-нибудь пробовали? –

+1

Один из способов сделать это - создать новый столбец правильного типа данных и преобразовать данные, а затем удалить старый столбец. –

+0

Да, это то, о чем я думал ... Создайте новое поле под названием «CopyField1», затем преобразуйте данные в правильный тип данных ... Удалите старое поле, а затем переименуйте 'CopyField1' обратно в правильное имя ... :-) – WebDevB

ответ

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
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; 
Смежные вопросы