2013-09-22 163 views
2

我想将我的数据库的datetime列转换为没有数据丢失的时间戳。我也跟着这样的回答: Bulk convert and update datetime column values to UNIX timestamp?mysql - 将datetime列转换为时间戳

但是当我想:

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; 

回答

0

的MySQL TIMESTAMPUNIX_TIMESTAMP是不一样的型!

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

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

+0

但我需要该列为TIMESTAMP类型不是INT。 – exim

+0

@exim那么你不能在这些列中以unix格式存储日期! – alfasin

相关问题