Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thay đổi kiểu dữ liệu từ DATE sang DATETIME trong MySQL?

Cú pháp cơ bản

ALTER TABLE ten_bang CHANGE ten_cot ten_cot DATETIME;

Lưu ý: Phải lặp lại tên cột hai lần (tên cũ, tên mới) ngay cả khi không đổi tên.

Ví dụ minh họa

Tạo bảng với cột DATE

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    LoginDate DATE
);

mysql> INSERT INTO DemoTable(LoginDate) VALUES('2019-01-21');
mysql> INSERT INTO DemoTable(LoginDate) VALUES('2018-05-01');
mysql> INSERT INTO DemoTable(LoginDate) VALUES('2017-12-31');

Dữ liệu gốc

+----+------------+
| Id | LoginDate  |
+----+------------+
| 1  | 2019-01-21 |
| 2  | 2018-05-01 |
| 3  | 2017-12-31 |
+----+------------+

Thay đổi kiểu dữ liệu

mysql> ALTER TABLE DemoTable CHANGE LoginDate LoginDate DATETIME;
Query OK, 3 rows affected (1.63 sec)

Kiểm tra cấu trúc bảng

mysql> DESC DemoTable;
+-----------+----------+------+-----+---------+----------------+
| Field     | Type     | Null | Key | Default | Extra          |
+-----------+----------+------+-----+---------+----------------+
| Id        | int(11)  | NO   | PRI | NULL    | auto_increment |
| LoginDate | datetime | YES  |     | NULL    |                |
+-----------+----------+------+-----+---------+----------------+

Lưu ý quan trọng

  • Dữ liệu hiện có: Giá trị DATE sẽ tự động chuyển thành DATETIME với thời gian 00:00:00
  • Khóa ngoại: Nếu cột là khóa ngoại, phải xóa FK trước, ALTER, rồi tạo lại FK
  • Index: Index trên cột sẽ được tự động cập nhật
  • Trigger/Stored Procedure: Có thể cần sửa đổi nếu tham chiếu kiểu dữ liệu

Cú pháp thay thế (MySQL 8.0+)

ALTER TABLE DemoTable MODIFY LoginDate DATETIME;

Cú pháp MODIFY ngắn gọn hơn, không cần lặp tên cột.

Chuyển ngược: DATETIME → DATE

ALTER TABLE DemoTable MODIFY LoginDate DATE;

Thời gian sẽ bị cắt bỏ, chỉ giữ ngày.