2009-08-15 19 views
15

統計情報を持つテーブルとUnixタイムスタンプ付きのtimeフィールドがあります。UNIXへのタイムスタンプ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

://www.jordigirones.com/455-convertir-unix-timestamp-en-fecha-de-mysql.html) –

答えて

30

実際に使用する前にテストすることを忘れないでください。これはメモリから書かれていますが、良いアイデアを与えるはずです。あなたは[http://www.jordigirones.com/455-convertir-unix-timestamp-en-fecha-de-mysql.html](httpで日時でタイムスタンプを変換する方法を見ることができます

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'でなければなりません。ありがとう! –

+0

訂正して、喜んで – Lepidosteus

+0

偉大な仕事!完璧に働いた! – Abadis

3
  1. 使用同じテーブル
  2. 更新統計設定TIME2 = FROM_UNIXTIME(時間)の日時タイプで新しい列(例えばTIME2)を作成するテーブルを変更します。
  3. alter tableを使用してa)時間列を削除し、b)time2の名前をtimeに変更します。
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`; 
関連する問題