我已将所有日期存储到我的数据库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个数字号码。
答案 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时间戳格式。