การคำนวณวันที่ขณะ INSERT
ใช้ DATE_ADD(date, INTERVAL n UNIT) ในคำสั่ง INSERT เพื่อตั้งค่าวันที่ที่คำนวณแล้วตั้งแต่แรก
ตัวอย่าง: เพิ่มเวลา 3 นาที/ชั่วโมง/วัน/เดือน/ปี
mysql> create table DemoTable816(DueDate datetime);
Query OK, 0 rows affected (0.45 sec)
mysql> insert into DemoTable816 values(date_add(now(), interval 3 minute));
mysql> insert into DemoTable816 values(date_add('2018-01-21 00:00:00', interval 3 hour));
mysql> insert into DemoTable816 values(date_add('2016-11-11 12:40:00', interval 3 day));
mysql> insert into DemoTable816 values(date_add('2018-12-01 11:00:00', interval 3 month));
mysql> insert into DemoTable816 values(date_add('2011-03-21 10:00:00', interval 3 year));
ผลลัพธ์
+---------------------+
| DueDate |
+---------------------+
| 2019-08-03 13:08:43 | -- now() + 3 นาที
| 2018-01-21 03:00:00 | -- + 3 ชั่วโมง
| 2016-11-14 12:40:00 | -- + 3 วัน
| 2019-03-01 11:00:00 | -- + 3 เดือน
| 2014-03-21 10:00:00 | -- + 3 ปี
+---------------------+
การใช้งานอื่นๆ
-- ลบเวลา (ใช้ -interval)
INSERT INTO t VALUES (DATE_ADD('2024-01-01', INTERVAL -1 MONTH));
-- ใช้ร่วมกับ CURDATE(), NOW()
INSERT INTO events (event_date) VALUES (DATE_ADD(CURDATE(), INTERVAL 7 DAY));
-- ฟังก์ชันทางเลือก: DATE_SUB() สำหรับลบ
INSERT INTO t VALUES (DATE_SUB('2024-01-01', INTERVAL 1 DAY));
สรุป
ใช้ DATE_ADD(date, INTERVAL n UNIT) ในคำสั่ง INSERT เพื่อคำนวณและตั้งค่าวันที่พร้อมกัน ไม่ต้อง UPDATE ทีหลัง