2009-08-15 6 views
15

나는 통계가있는 테이블과 Unix 타임 스탬프가있는 time 필드를 가지고 있습니다.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 필드해야한다.

유닉스 타임 스탬프를 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) –

답변

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'이어야합니다. 감사! –

+0

도와 주시겠습니까? – Lepidosteus

+0

위대한 직업! 완벽하게 일했습니다! – Abadis

3
  1. 는 동일한 테이블
  2. 업데이트 기록 설정 TIME2 = FROM_UNIXTIME (시간)에서의 날짜 형태로 새로운 열 (. TIME2 등)를 작성하는 테이블을 변경;
  3. alter table을 사용하여 a) 시간 열을 삭제하고 b) time2의 이름을 시간으로 변경합니다.
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`; 
관련 문제