สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable1984 ( ShippingDate date );
mysql> insert into DemoTable1984 values('2014-01-11');
mysql> insert into DemoTable1984 values('2015-12-23');
mysql> insert into DemoTable1984 values('2017-10-31');
mysql> insert into DemoTable1984 values('2018-06-01');
ข้อมูลก่อนเปลี่ยน
+--------------+
| ShippingDate |
+--------------+
| 2014-01-11 |
| 2015-12-23 |
| 2017-10-31 |
| 2018-06-01 |
+--------------+
Query เพิ่ม 2 ปี ให้ทุกแถว
mysql> update DemoTable1984 set ShippingDate = date_add(ShippingDate, interval 2 year); Query OK, 4 rows affected (0.00 sec)
ข้อมูลหลังเปลี่ยน
+--------------+
| ShippingDate |
+--------------+
| 2016-01-11 |
| 2017-12-23 |
| 2019-10-31 |
| 2020-06-01 |
+--------------+
รูปแบบ INTERVAL ที่ใช้ได้
| หน่วย | ตัวอย่าง | คำอธิบาย |
| YEAR | INTERVAL 2 YEAR | เพิ่ม 2 ปี |
| MONTH | INTERVAL 3 MONTH | เพิ่ม 3 เดือน |
| DAY | INTERVAL 10 DAY | เพิ่ม 10 วัน |
| HOUR | INTERVAL 5 HOUR | เพิ่ม 5 ชั่วโมง |
| MINUTE | INTERVAL 30 MINUTE | เพิ่ม 30 นาที |
| SECOND | INTERVAL 45 SECOND | เพิ่ม 45 วินาที |
รูปแบบย่อ (Shorthand)
-- ทั้งคู่นี้เทียบเท่ากัน
DATE_ADD(date, INTERVAL 2 YEAR)
DATE_ADD(date, INTERVAL 24 MONTH)
date + INTERVAL 2 YEAR -- MySQL รองรับ Operator + กับ INTERVAL
ลบวันที่ (Subtract)
DATE_SUB(date, INTERVAL 1 YEAR)
date - INTERVAL 1 YEAR
คำเตือน
- คำสั่ง UPDATE นี้เปลี่ยนข้อมูลถาวร ควร BACKUP หรือทดสอบด้วย SELECT ก่อน
- หากต้องการเก็บประวัติ ให้สร้างคอลัมน์ใหม่แทนการ UPDATE ทับค่าเดิม
- DATE_ADD รองรับ Leap Year อัตโนมัติ (29 Feb → 28 Feb หรือ 1 Mar ขึ้นกับการตั้งค่า)