mysql как конвертировать varchar (10) в TIMESTAMP? - PullRequest
2 голосов
/ 02 декабря 2011

Я сохранил всю дату в своей базе данных как varchar(10), теперь я хочу преобразовать их в TIMESTAMP.

Когда я запускаю sql

ALTER TABLE  `demo3` CHANGE  `date`  `date` TIMESTAMP NOT NULL

, это предупреждает:

#1292 - Incorrect datetime value: '1320534000' for column 'date' at row 1 

Кстати, все мои даты formart 10 цифровых номеров.

Ответы [ 3 ]

2 голосов
/ 02 декабря 2011

Сначала вы должны изменить метку времени на datetime, а затем можете изменить тип столбца.

ALTER TABLE `demo3` MODIFY COLUMN `date` varchar(25);

UPDATE `demo3` SET `date`= FROM_UNIXTIME(`date`);

ALTER TABLE  `demo3` CHANGE  `date`  `date` TIMESTAMP NOT NULL
1 голос
/ 02 декабря 2011

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

Итак, добавьте новый столбец отметки времени с значением по умолчанию NULL

Затем запустите что-то похожее на:

UPDATE demo3 SET new_timestamp = CONVERT(date, signed)

(Возможно, вам придется попробовать конвертировать из метки времени Unix и обратно - см. http://kitt.hodsden.org/mysql/converting_to_mysqls_timestamp_from_int11)

Который должен вставлять целые числа в столбец метки времени.

Затем избавьтесь от исходного столбца даты и переименуйте столбец отметки времени.

0 голосов
/ 02 декабря 2011

Сначала вы должны преобразовать этот формат метки времени Unix с помощью функции FROM_UNIXTIME.

...