【问题标题】:mysql - converting datetime column to timestampmysql - 将日期时间列转换为时间戳
【发布时间】:2013-09-27 07:22:27
【问题描述】:

我正在尝试将我的数据库的日期时间列转换为时间戳而不丢失数据。我遵循了这个答案: Bulk convert and update datetime column values to UNIX timestamp?

但是当我想:

UPDATE `members` SET `new_join_date` = UNIX_TIMESTAMP(`join_date`), `new_last_visit` = UNIX_TIMESTAMP(`last_visit`);

我收到此错误:

#1292 - Incorrect datetime value: '1376833381' for column 'new_join_date' at row 1

完整的转换查询:

ALTER TABLE `members`
ADD COLUMN `new_join_date` TIMESTAMP NULL AFTER `join_date`,
ADD COLUMN `new_last_visit` TIMESTAMP NULL AFTER `last_visit`;

UPDATE `members`
SET `new_join_date` = UNIX_TIMESTAMP(`join_date`),
`new_last_visit` = UNIX_TIMESTAMP(`last_visit`);

ALTER TABLE `members` DROP `join_date`;

ALTER TABLE `members` DROP `last_visit`;

ALTER TABLE `members` CHANGE `new_join_date` `join_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE `members` CHANGE `new_last_visit` `last_visit` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

【问题讨论】:

    标签: mysql datetime


    【解决方案1】:

    MySQL TIMESTAMPUNIX_TIMESTAMP 不是同一个类型!

    您将 new_join_datenew_last_visit 声明为 TIMESTAMP 类型,然后尝试将其设置为其他类型,因此出现错误。

    要解决这个问题,您应该将这些列声明为INT(11)

    【讨论】:

    • 但我需要这些列是 TIMESTAMP 类型而不是 INT。
    • @exim 那么你不能在这些列中以 unix 格式存储日期!
    猜你喜欢
    • 2023-03-24
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多