10
私はyoundでしたが、の愚かなは経験がほとんどなかったので、PHPでタイムスタンプを生成し、MySQL innodbテーブルのINT
カラムに格納することをお勧めします。今、このテーブルに数百万のレコードがあり、日付ベースのクエリが必要な場合は、この列をTIMESTAMP
に変換します。これはどうすればいいですか?INTからTIMESTAMPへのmysqlカラムの変換
Currenlty、私のテーブルは次のようになります。
ここid (INT) | message (TEXT) | date_sent (INT)
---------------------------------------------
1 | hello? | 1328287526
2 | how are you? | 1328287456
3 | shut up | 1328234234
4 | ok | 1328678978
5 | are you... | 1328345324
は、私がTIMESTAMP
にdate_sent
列を変換するには、思い付いたクエリは、次のとおりです。
-- creating new column of TIMESTAMP type
ALTER TABLE `pm`
ADD COLUMN `date_sent2` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
-- assigning value from old INT column to it, in hope that it will be recognized as timestamp
UPDATE `pm` SET `date_sent2` = `date_sent`;
-- dropping the old INT column
ALTER TABLE `pm` DROP COLUMN `date_sent`;
-- changing the name of the column
ALTER TABLE `pm` CHANGE `date_sent2` `date_sent` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
すべてが私には正しいようだが、とき時間が来るUPDATE
pm SET
date_sent2 =
date_sent ;
、私は警告とタイムスタンプの値が空のままになる:
+---------+------+--------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------+
| Warning | 1265 | Data truncated for column 'date_sent2' at row 1 |
私は間違っていますが、これを修正する方法はありますか?
ありがとうございます。完璧に動作します! –