2011-12-02 98 views
2

我已經將所有日期存儲到我的數據庫中,現在我想將它們轉換爲TIMESTAMP中的varchar(10)如何將varchar(10)轉換爲TIMESTAMP?

當我運行SQL

ALTER TABLE `demo3` CHANGE `date` `date` TIMESTAMP NOT NULL 

它警告:

#1292 - Incorrect datetime value: '1320534000' for column 'date' at row 1 

順便說一句,我的所有日​​期formart 10個數字。

+1

表示日期的字符串是什麼格式? –

+0

@Anthony Grist,'1320534000'他們從'strtotime()' –

+0

@fishman轉移我不知道你是Converse的粉絲:p – ajreal

回答

2

您應該先將時間戳更改爲datetime,然後才能更改列的類型。

ALTER TABLE `demo3` MODIFY COLUMN `date` varchar(25); 

UPDATE `demo3` SET `date`= FROM_UNIXTIME(`date`); 

ALTER TABLE `demo3` CHANGE `date` `date` TIMESTAMP NOT NULL 
+0

這很酷 - 我認爲你需要一箇中間列變成。我會在稍後嘗試 - 謝謝! – dash

0

首先,您必須使用FROM_UNIXTIME函數將該unix時間戳格式轉換。

1

您需要添加一個所需類型的新列,然後更新該表,將字符串轉換爲更新語句中每一行的數字。

因此,與NULL

然後運行類似的東西的默認添加新的時間戳列:

UPDATE demo3 SET new_timestamp = CONVERT(date, signed) 

(您可能需要嘗試從UNIX時間戳和轉換回再 - 見http://kitt.hodsden.org/mysql/converting_to_mysqls_timestamp_from_int11

應該將整數推入時間戳列。

然後擺脫原始日期列並重命名時間戳列。