mysql如何将varchar(10)转换为TIMESTAMP?

时间:2011-12-02 12:09:00

标签: mysql timestamp varchar

我已将所有日期存储到我的数据库varchar(10),现在我想将它们转换为TIMESTAMP。

当我运行sql

ALTER TABLE  `demo3` CHANGE  `date`  `date` TIMESTAMP NOT NULL
警告:

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

BTW,我的所有日​​期格式都是10个数字号码。

3 个答案:

答案 0 :(得分:2)

您应首先将时间戳更改为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 :(得分:1)

您需要添加一个包含所需类型的新列,然后更新表,将字符串转换为update语句中每行的数字。

所以添加新的timestamp列,默认值为NULL

然后运行类似于:

的东西
UPDATE demo3 SET new_timestamp = CONVERT(date, signed)

(您可能需要尝试从unix时间戳转换回来 - 请参阅http://kitt.hodsden.org/mysql/converting_to_mysqls_timestamp_from_int11

哪个应该将整数推入时间戳列。

然后删除原始日期列并重命名时间戳列。

答案 2 :(得分:0)

首先,您必须使用FROM_UNIXTIME函数转换该unix时间戳格式。