Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีเปลี่ยนชนิดข้อมูลจาก DATE เป็น DATETIME ใน MySQL

การเปลี่ยนชนิดข้อมูลคอลัมน์ด้วย 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 หรือต้องปรับโค้ดด้วย