2009-08-15 191 views
15

我有統計數據的表格和一個名爲time使用Unix時間戳字段。UNIX時間戳到MySQL DATETIME

有表中的約200行,但我想改變的Unix時間戳到MySQL DATETIME不失當前行。目前表:

CREATE TABLE `stats` (
    `id` int(11) unsigned NOT NULL auto_increment, 
    `time` int(11) NOT NULL, 
    `domain` varchar(40) NOT NULL, 
    `ip` varchar(20) NOT NULL, 
    `user_agent` varchar(255) NOT NULL, 
    `domain_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

所以time(INT)應該是一個DATETIME場。

如何更新Unix時間戳到MySQL的DATETIME?

+0

你可以看到如何時間戳轉換的日期時間在[http://www.jordigirones.com/455-convertir-unix-timestamp-en-fecha-de-mysql.html](http ://www.jordigirones.com/455-convertir-unix-timestamp-en-fecha-de-mysql.html) – 2012-07-06 09:08:04

回答

30

記得在真實使用它之前測試它,這是從內存寫入,但應該給你一個好主意。

ALTER TABLE `stats` CHANGE `time` `unix_time` int(11) NOT NULL // rename the old column 
ALTER TABLE `stats` ADD `time` DATETIME NOT NULL // create the datetime column 
UPDATE `stats` SET `time`=FROM_UNIXTIME(unix_time) // convert the data 
ALTER TABLE `stats` DROP `unix_time` // drop the old unix time column 
+0

偉大的作品,最後一個應該是ALTER TABLE'stats'。謝謝! – 2009-08-15 13:31:23

+0

更正,很樂意幫助 – Lepidosteus 2009-08-15 13:33:27

+0

偉大的工作!完美工作! – Abadis 2017-11-16 12:24:03

3
  1. 使用alter table來與同一表
  2. 更新統計設置TIME2 = FROM_UNIXTIME(時間)的日期時間類型創建一個新的列(例如,時間2);
  3. 使用alter table一個)刪除時間列,以及b)在時間2重命名爲時間。
0
ALTER TABLE `stats` 
MODIFY COLUMN `time` timestamp NULL DEFAULT '0000-00-00 00:00:00' AFTER `id`; 
ALTER TABLE `stats` 
MODIFY COLUMN `time` datetime NULL DEFAULT '0000-00-00 00:00:00' AFTER `id`;