Giới thiệu
Sử dụng UPDATE với CURDATE() để gán ngày hiện tại (phần giờ = 00:00:00) cho tất cả hàng trong cột DATETIME.
Ví dụ thực hành
1. Tạo bảng DemoTable821
mysql> CREATE TABLE DemoTable821 (AdmissionDate DATETIME);
2. Chèn dữ liệu ngày cũ
mysql> INSERT INTO DemoTable821 VALUES
('2019-01-21'),('2018-11-02'),('2016-12-31'),('2015-03-19');
3. Cập nhật tất cả thành ngày hôm nay (giả sử 2019-08-03)
mysql> UPDATE DemoTable821 SET AdmissionDate = CURDATE();
4. Kết quả
+---------------------+
| AdmissionDate |
+---------------------+
| 2019-08-03 00:00:00 |
| 2019-08-03 00:00:00 |
| 2019-08-03 00:00:00 |
| 2019-08-03 00:00:00 |
+---------------------+
Các biến thể
-- Cập nhật thành ngày giờ hiện tại (có giờ:phút:giây)
UPDATE DemoTable821 SET AdmissionDate = NOW();
-- Chỉ cập nhật một số hàng
UPDATE DemoTable821 SET AdmissionDate = CURDATE() WHERE Id > 2;
-- Dùng DATE() để cắt giờ từ NOW()
UPDATE DemoTable821 SET AdmissionDate = DATE(NOW());
⚠️ Cảnh báo
- Câu lệnh không có WHERE sẽ cập nhật toàn bộ bảng.
- Luôn chạy
SELECTcùng điều kiện trước để xác nhận. - Backup hoặc dùng transaction nếu cần an toàn.
Lưu ý về CURDATE() vs NOW()
CURDATE()→DATE(YYYY-MM-DD). Gán vào DATETIME → 00:00:00.NOW()→DATETIME(YYYY-MM-DD HH:MM:SS).- Nếu cột là
DATE, cả hai đều OK (phần giờ bị bỏ).