mysql - 将 datetime 列转换为 timestamp

24 浏览
0 Comments

mysql - 将 datetime 列转换为 timestamp

我正在尝试将数据库中的datetime列转换为timestamp,以避免数据丢失。我按照这个答案进行操作:批量转换和更新datetime列值为UNIX时间戳?,但是当我想执行以下操作时:

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

我遇到了这个错误:

#1292 - 'new_join_date'列的'1376833381'值不正确

完整的转换查询如下:

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;

0
0 Comments

问题出现的原因是因为在声明了new_join_datenew_last_visitTIMESTAMP类型后,尝试将其设置为不同类型,因此出现错误。

解决方法是将这些列声明为INT(11)类型。

但是我需要这些列的类型为TIMESTAMP而不是INT

那么你就无法在这些列中以unix格式存储日期!

0