2011-12-02 35 views
2

データベースにすべての日付をvarchar(10)として保存しました。これをTIMESTAMPに変換したいと思います。私は、SQLmysql varchar(10)をTIMESTAMPに変換する方法は?

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を参照してください)

これは、整数をタイムスタンプ列にプッシュするものです。

元の日付列を取り除き、タイムスタンプ列の名前を変更します。

関連する問題