Tóm tắt
Bài viết hướng dẫn cách cộng thêm khoảng thời gian (ngày, giờ, phút, giây) vào giá trị datetime hiện tại NOW() hoặc cột datetime bằng hàm INTERVAL.
Cú pháp chung
-- Cộng 5 ngày
NOW() + INTERVAL 5 DAY
-- Cộng 5 giờ
NOW() + INTERVAL 5 HOUR
-- Cộng 5 phút
NOW() + INTERVAL 5 MINUTE
-- Cộng 5 giây
NOW() + INTERVAL 5 SECOND
Ví dụ thực tế: Cập nhật ngày hết hạn
1. Tạo bảng
CREATE TABLE UserInformationExpire (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(10),
UserInformationExpireDateTime DATETIME NOT NULL
);
2. Chèn dữ liệu mẫu
INSERT INTO UserInformationExpire (UserName, UserInformationExpireDateTime) VALUES
('Maxwell', '2019-02-09 23:56:27'),
('Carol', '2018-11-21 15:45:21'),
('Bob', '2019-01-22 16:30:35'),
('Larry', '2017-12-25 17:20:33');
3. Cập nhật thêm 5 ngày cho Id = 1
UPDATE UserInformationExpire
SET UserInformationExpireDateTime = NOW() + INTERVAL 5 DAY
WHERE Id = 1;
Lưu ý: Ví dụ dùng NOW() nên kết quả phụ thuộc thời điểm chạy. Trong bài gốc dùng giá trị cố định để minh họa.
4. Kết quả sau cập nhật
+----+----------+-------------------------------+
| Id | UserName | UserInformationExpireDateTime |
+----+----------+-------------------------------+
| 1 | Maxwell | 2019-02-14 23:56:27 |
+----+----------+-------------------------------+
Các biến thể hữu ích
| Mục đích | Cú pháp |
|---|---|
| Cộng 3 tháng | |
| Trừ 10 ngày | |
| Cộng 1 năm 2 tháng |
Mẹo
- Dùng
DATE_ADD()/DATE_SUB()cho rõ ý nghĩa, nhưng+ INTERVALngắn gọn hơn. - Kết hợp với
WHEREđể cập nhật hàng loạt:UPDATE bang SET ngay = ngay + INTERVAL 7 DAY WHERE dieu_kien.