Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: ตั้งค่าวันที่ขณะ INSERT โดยไม่ต้อง UPDATE หลัง (DATE_ADD)

การคำนวณวันที่ขณะ 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 ทีหลัง