การเปลี่ยนชนิดข้อมูลคอลัมน์ด้วย ALTER TABLE CHANGE
เมื่อต้องการเปลี่ยนคอลัมน์จาก DATE (เก็บเฉพาะวันที่) เป็น DATETIME (เก็บวันที่และเวลา) ใช้คำสั่ง ALTER TABLE ... CHANGE โดยระบุชื่อคอลัมน์เดิม ชื่อคอลัมน์ใหม่ (อาจเหมือนเดิม) และชนิดข้อมูลใหม่
ไวยากรณ์
ALTER TABLE your_table_name CHANGE your_column_name your_column_name DATETIME;
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
LoginDate DATE
);
INSERT INTO DemoTable (LoginDate) VALUES
('2019-01-21'),
('2018-05-01'),
('2017-12-31');
ข้อมูลก่อนเปลี่ยนชนิด
+----+------------+ | Id | LoginDate | +----+------------+ | 1 | 2019-01-21 | | 2 | 2018-05-01 | | 3 | 2017-12-31 | +----+------------+
คำสั่งเปลี่ยนชนิดข้อมูล
ALTER TABLE DemoTable CHANGE LoginDate LoginDate DATETIME;
ตรวจสอบโครงสร้างตารางหลังเปลี่ยน
DESC DemoTable;
ผลลัพธ์โครงสร้าง
+-----------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | LoginDate | datetime | YES | | NULL | | +-----------+----------+------+-----+---------+----------------+
คำอธิบาย:
- ข้อมูลเดิมที่เป็น DATE จะถูกแปลงเป็น DATETIME โดยเวลาจะเป็น
00:00:00อัตโนมัติ - คำสั่ง
CHANGEต้องระบุชื่อคอลัมน์สองครั้ง: ชื่อเก่า และชื่อใหม่ (แม้จะเหมือนกัน) - สามารถเพิ่ม
DEFAULT CURRENT_TIMESTAMPหรือON UPDATE CURRENT_TIMESTAMPได้หากต้องการ
⚠ ข้อควรระวัง:
- การเปลี่ยนชนิดข้อมูลอาจใช้เวลานานบนตารางขนาดใหญ่ (Table Lock)
- ควรสำรองข้อมูล (Backup) ก่อนทำการ ALTER TABLE
- ตรวจสอบว่า Application ที่เชื่อมต่อรองรับ DATETIME หรือต้องปรับโค้ดด้วย