การเพิ่มวันให้กับคอลัมน์วันที่ด้วย ADDDATE และ UPDATE
ใช้ ADDDATE() หรือ DATE_ADD() ร่วมกับ UPDATE เพื่อเพิ่มจำนวนวันที่กำหนดให้กับคอลัมน์วันที่
ไวยากรณ์
UPDATE yourTableName
SET yourDateColumn = ADDDATE(yourDateColumn, INTERVAL 30 DAY);
ตัวอย่างการใช้งาน
สร้างตาราง:
CREATE TABLE Add30DayDemo (
Id INT NOT NULL AUTO_INCREMENT,
ShippingDate DATE,
PRIMARY KEY(Id)
);
เพิ่มข้อมูล:
INSERT INTO Add30DayDemo(ShippingDate) VALUES('2019-02-04');
INSERT INTO Add30DayDemo(ShippingDate) VALUES('2018-11-15');
INSERT INTO Add30DayDemo(ShippingDate) VALUES('2013-05-18');
INSERT INTO Add30DayDemo(ShippingDate) VALUES('2017-08-25');
INSERT INTO Add30DayDemo(ShippingDate) VALUES('2016-03-01');
INSERT INTO Add30DayDemo(ShippingDate) VALUES('2015-09-03');
เพิ่ม 30 วัน:
UPDATE Add30DayDemo
SET ShippingDate = ADDDATE(ShippingDate, INTERVAL 30 DAY);
ผลลัพธ์:
+----+--------------+
| Id | ShippingDate |
+----+--------------+
| 1 | 2019-03-06 |
| 2 | 2018-12-15 |
| 3 | 2013-06-17 |
| 4 | 2017-09-24 |
| 5 | 2016-03-31 |
| 6 | 2015-10-03 |
+----+--------------+
การเพิ่มช่วงเวลาอื่นๆ
| ช่วงเวลา | คำสั่ง |
|---|---|
| 1 วัน | INTERVAL 1 DAY |
| 7 วัน (1 สัปดาห์) | INTERVAL 7 DAY หรือ INTERVAL 1 WEEK |
| 1 เดือน | INTERVAL 1 MONTH |
| 3 เดือน | INTERVAL 3 MONTH |
| 1 ปี | INTERVAL 1 YEAR |
| 1 ชั่วโมง | INTERVAL 1 HOUR (สำหรับ DATETIME/TIMESTAMP) |
| 30 นาที | INTERVAL 30 MINUTE |
ฟังก์ชันที่เทียบเท่า
-- ทั้งคู่นี้ให้ผลลัพธ์เหมือนกัน
ADDDATE(date, INTERVAL 30 DAY)
DATE_ADD(date, INTERVAL 30 DAY)
date + INTERVAL 30 DAY -- shorthand (MySQL extension)
⚠️ ข้อควรระวัง
- ไม่มี WHERE = อัปเดตทุกแถว - ตรวจสอบด้วย SELECT ก่อน
- วันที่สิ้นเดือน - MySQL จัดการอัตโนมัติ (31 มกราคม + 1 เดือน = 28/29 กุมภาพันธ์)
- YEAR/MONTH - อาจให้ผลต่างจากการบวกวัน (30 วัน ≠ 1 เดือน)
- Backup - สำรองข้อมูลก่อน UPDATE จำนวนมาก