【问题标题】:mysql how to convert varchar(10) to TIMESTAMP?mysql如何将varchar(10)转换为TIMESTAMP?
【发布时间】:2011-12-02 12:08:59
【问题描述】:

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

当我运行 sql 时

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

它提醒:

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

顺便说一句,我所有的日期格式都是 10 位数字。

【问题讨论】:

  • 代表日期的字符串是什么格式的?
  • @Anthony Grist, 1320534000 他们是从strtotime()转移过来的
  • @fishman 我不知道你是匡威的粉丝:p
  • @fishman 请提供示例日期值

标签: mysql timestamp varchar


【解决方案1】:

您应该先将时间戳更改为日期时间,然后才能更改列的类型。

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

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

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

【讨论】:

  • 这很酷 - 我认为您需要一个中间列来转换为。我稍后再试试 - 谢谢!
【解决方案2】:

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

所以添加新的时间戳列,默认值为 NULL

然后运行类似于:

UPDATE demo3 SET new_timestamp = CONVERT(date, signed)

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

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

然后去掉原来的日期列,重命名时间戳列。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 2012-10-07
      • 2021-08-30
      • 1970-01-01
      • 2015-06-27
      • 2016-10-19
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多