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

เพิ่ม 30 วันให้กับวันที่ในตาราง MySQL

การเพิ่มวันให้กับคอลัมน์วันที่ด้วย 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 จำนวนมาก