2009-08-15 25 views
15

Ho una tabella con statistiche e un campo denominato time con timestamp Unix.UNIX Timestamp to MySQL DATETIME

Ci sono circa 200 righe nella tabella, ma mi piacerebbe cambiare i timestamp Unix in MySQL DATETIME senza perdere le righe correnti. La tabella corrente:

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 

Così il time (INT) dovrebbe essere un campo datetime.

Come posso aggiornare Unix Timestamp a DATETIME di MySQL?

+0

Si può vedere come convertire timestamp in datetime in [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) –

risposta

30

Ricordati di provarlo prima di usarlo per davvero, questo è scritto dalla memoria, ma dovrebbe darvi una buona idea.

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

Funziona alla grande, l'ultima dovrebbe essere ALTER TABLE 'stats'. Grazie! –

+0

corretto, felice di aiutare – Lepidosteus

+0

Ottimo lavoro! Ha funzionato perfettamente! – Abadis

3
  1. uso alterare tabella per creare una nuova colonna (es time2.) Con il tipo datetime nella stessa tabella
  2. aggiornamento previsti impostare time2 = FROM_UNIXTIME (tempo);
  3. utilizzare alter table per a) eliminare la colonna dell'ora e b) rinominare l'ora 2 per volta.
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`;