mysql如何将varchar(10)转换为时间戳?

mysql如何将varchar(10)转换为时间戳?,mysql,timestamp,varchar,Mysql,Timestamp,Varchar,我已将所有日期存储到数据库中,作为varchar(10),现在我想将它们转换为时间戳 当我运行sql时 ALTER TABLE `demo3` CHANGE `date` `date` TIMESTAMP NOT NULL it警报: #1292 - Incorrect datetime value: '1320534000' for column 'date' at row 1 顺便说一句,我所有的约会表格都是10位数字 首先,您必须使用FROM_UNIXTIME函数转换unix时

我已将所有日期存储到数据库中,作为
varchar(10)
,现在我想将它们转换为时间戳

当我运行sql时

ALTER TABLE  `demo3` CHANGE  `date`  `date` TIMESTAMP NOT NULL
it警报:

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

顺便说一句,我所有的约会表格都是10位数字

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

您应该首先将时间戳更改为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

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

因此,添加默认值为NULL的新时间戳列

然后运行类似于:

UPDATE demo3 SET new_timestamp = CONVERT(date, signed)
(您可能需要尝试从unix时间戳转换,然后再转换回来-请参阅)

它应该将整数推送到timestamp列中


然后去掉原始日期列并重命名时间戳列。

表示日期的字符串的格式是什么?@Anthony Grist,
1320534000
它们是从
strotime()传输的
@fishman我不知道你是匡威的粉丝:p@fishman请提供很酷的日期值示例-我认为您需要一个中间列来转换为。我稍后会试试这个-谢谢!