2013-12-06 3 views
0

Я все еще довольно новичок в базах данных в целом.Как я могу изменить данные временной метки Unix на MySql timestamps в моей базе?

Я создал один, и мое приложение получило текущее время как временную метку Unix и занесено в time_stamp int(11) NOT NULL.

Теперь я понимаю, как это было глупо, но я не хочу потерять свои данные.

Есть ли инструкция UPDATE, которую я могу использовать в командном поле MySql, чтобы изменить все эти INT s на MySql TIMESTAMP s?


Кроме того, у меня есть дамп базы данных, так что я думаю, я мог бы также использовать PhpMyAdmin переопределить столбец (который, кажется, чтобы установить весь мой к типу INT «00-00-0000 00:00:00»), а затем удалите содержимое таблицы, глобально отредактируйте SqlDump и импортируйте его.

Но, если да, как мне изменить дамп? Вот несколько строк из него ...

INSERT INTO `activity` (`badge_number`, `time_stamp`, `activity`, `bar_code`, `rfid_tag`) 
VALUES (0, 1350388291, 'login', '', ''), (0,1350388433, 'logout', '', ''), 

Так,

UPDATE ACTIVITY SET time_stamp = <what?> WHERE <what?> 

Заранее спасибо за любую помощь.

ответ

2

Try либо

ALTER TABLE activity CHANGE time_stamp time_stamp VARCHAR(19); 
UPDATE activity 
    SET time_stamp = FROM_UNIXTIME(time_stamp); 
ALTER TABLE activity CHANGE time_stamp time_stamp TIMESTAMP; 

Вот SQLFiddle демо

или

ALTER TABLE activity ADD COLUMN time_stamp2 TIMESTAMP; 
UPDATE activity 
    SET time_stamp2 = FROM_UNIXTIME(time_stamp); 
ALTER TABLE activity DROP COLUMN time_stamp; 
ALTER TABLE activity CHANGE time_stamp2 time_stamp TIMESTAMP; 

Здесь SQLFiddle демо

Примечание: Прежде чем продолжить обновление, убедитесь, что у вас есть надежная резервная копия таблицы/базы данных. На всякий случай.

+0

Большое вам спасибо! Я попробую это и награду ответа, если он будет работать. – Mawg

+0

Еще раз спасибо, я очень ценю, как быстро вы ответили - и с демо тоже! – Mawg

+1

@Mawg Вы очень желанны. Я рад, что смогу помочь. Удачи :) – peterm

Смежные вопросы