2016-10-25 4 views
0

Я новичок в мире баз данных и застрял в своей работе с каждым столбцом в базе данных, который должен быть DATETIME, или TIMESTAMP, или что-либо, связанное с датой, - VARCHAR (250) Пример. : 201610251557.VARCHAR to DATE - MySQL

Мой вопрос в том, что есть способ изменить столбец на сегодняшний день, с потерей значений на нем?

Я уже пытался изменить структуру столбцов, но он меняет каждое значение на 0000-00-00 00-00.

+0

Пройдите и исправьте все поля, прежде чем конвертировать их. – aynber

ответ

1

Safest сценарий:

  1. добавить новое поле с правильным типом
  2. обновление данных пока новое поле не заполняется соответствующими данными для всех строк
  3. (опция) удалить (или переименовать для архивирования цели) старое поле
  4. (необязательно) переименовывать новое поле для имени исходного поля в
+0

Я использовал решение ура WEBjuju, haha, спасибо, ребята :) –

3

Вы можете посмотреть на ул _встретиться; он работает так:

SELECT STR_TO_DATE('201610251557', '%Y%m%d%H%i'); 

С этим изо отформатированный вывод, возможно, вы можете обновить вашу колонку, как это:

update my_table set datecol = STR_TO_DATE(datecol, '%Y%m%d%H%i'); 
+1

thx @baao - ты точно прав, должен иметь правильные параметры формата или он бомбит – WEBjuju

+0

Я использовал решение ура UUeerdo, haha, спасибо, ребята:) –

1

вы можете создать еще одну таблицу с str_to_date() функция затем удалить предыдущий переименовать новый один к предыдущему или восстановить его до оригинала