ใช้คำสั่ง ALTER TABLE ... MODIFY COLUMN เพื่อเปลี่ยนชนิดข้อมูลจาก TEXT เป็น TIMESTAMP
รูปแบบคำสั่ง
ALTER TABLE yourTableName MODIFY COLUMN yourColumnName TIMESTAMP;
ตัวอย่างขั้นตอน
1. สร้างตารางชนิด TEXT
mysql> create table textTotimestampdemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Source text
-> );
2. ตรวจสอบโครงสร้างก่อนเปลี่ยน
mysql> desc textTotimestampdemo;
+--------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+---------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Source | text | YES | | NULL | | +--------+---------+------+-----+---------+----------------+
3. เปลี่ยนชนิดข้อมูล
mysql> alter table textTotimestampdemo modify column Source TIMESTAMP;
4. ตรวจสอบหลังเปลี่ยน
mysql> desc textTotimestampdemo;
+--------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-----------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Source | timestamp | YES | | NULL | | +--------+-----------+------+-----+---------+----------------+
⚠️ ข้อควรระวัง
- ข้อมูลเดิมจะสูญหาย หากข้อความใน TEXT ไม่ได้อยู่ในรูปแบบวันที่/เวลาที่ MySQL เข้าใจ
- ควร สำรองข้อมูลก่อน หรือสร้างคอลัมน์ใหม่ คัดลอกข้อมูลที่แปลงแล้ว แล้วลบคอลัมน์เก่า
- รูปแบบที่ MySQL รับได้:
YYYY-MM-DD HH:MM:SS,YYYYMMDDHHMMSS, timestamp number
วิธีปลอดภัยกว่า
-- 1. เพิ่มคอลัมน์ใหม่ ALTER TABLE textTotimestampdemo ADD COLUMN Source_new TIMESTAMP; -- 2. อัปเดตข้อมูล (แปลงรูปแบบให้ถูกต้อง) UPDATE textTotimestampdemo SET Source_new = STR_TO_DATE(Source, '%Y-%m-%d %H:%i:%s'); -- 3. ตรวจสอบข้อมูล แล้วลบคอลัมน์เก่าและ rename ใหม่ ALTER TABLE textTotimestampdemo DROP COLUMN Source, CHANGE Source_new Source TIMESTAMP;