Sử dụng hàm DATE_ADD() với INTERVAL ngay trong câu INSERT để tính toán ngày giờ trước khi lưu.
Tạo bảng demo
mysql> create table DemoTable816 (DueDate datetime); Query OK, 0 rows affected (0.45 sec)
Chèn và cùng lúc cập nhật ngày giờ (cộng thêm khoảng thời gian)
mysql> insert into DemoTable816 values(DATE_ADD(NOW(), INTERVAL 3 MINUTE));
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable816 values(DATE_ADD('2018-01-21 00:00:00', INTERVAL 3 HOUR));
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable816 values(DATE_ADD('2016-11-11 12:40:00', INTERVAL 3 DAY));
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable816 values(DATE_ADD('2018-12-01 11:00:00', INTERVAL 3 MONTH));
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable816 values(DATE_ADD('2011-03-21 10:00:00', INTERVAL 3 YEAR));
Query OK, 1 row affected (0.16 sec)
Hiển thị kết quả
mysql> select * from DemoTable816;
Kết quả - Các ngày đã được cộng thêm khoảng thời gian tương ứng
+---------------------+ | DueDate | +---------------------+ | 2019-08-03 13:08:43 | -- NOW() + 3 phút | 2018-01-21 03:00:00 | -- 2018-01-21 00:00:00 + 3 giờ | 2016-11-14 12:40:00 | -- 2016-11-11 12:40:00 + 3 ngày | 2019-03-01 11:00:00 | -- 2018-12-01 11:00:00 + 3 tháng | 2014-03-21 10:00:00 | -- 2011-03-21 10:00:00 + 3 năm +---------------------+ 5 rows in set (0.00 sec)
Giải thích DATE_ADD(date, INTERVAL value unit):
| Đơn vị (unit) | Ví dụ | Kết quả |
|---|---|---|
| MINUTE | INTERVAL 3 MINUTE | +3 phút |
| HOUR | INTERVAL 3 HOUR | +3 giờ |
| DAY | INTERVAL 3 DAY | +3 ngày |
| MONTH | INTERVAL 3 MONTH | +3 tháng |
| YEAR | INTERVAL 3 YEAR | +3 năm |
Cú pháp thay thế (ngắn gọn):
INSERT INTO DemoTable816 VALUES (NOW() + INTERVAL 3 MINUTE);
INSERT INTO DemoTable816 VALUES ('2018-01-21' + INTERVAL 3 HOUR);
Hàm đối ứng trừ thời gian: DATE_SUB(date, INTERVAL ...) hoặc date - INTERVAL ....
Ứng dụng: Tự động tính deadline, hạn chót, lịch nhắc nhở, scheduling ngay khi INSERT.