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

MySQL: เปลี่ยนวันที่ในตารางโดยเพิ่มปี ด้วย DATE_ADD

สร้างตารางและข้อมูลตัวอย่าง

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 ที่ใช้ได้

หน่วยตัวอย่างคำอธิบาย
YEARINTERVAL 2 YEARเพิ่ม 2 ปี
MONTHINTERVAL 3 MONTHเพิ่ม 3 เดือน
DAYINTERVAL 10 DAYเพิ่ม 10 วัน
HOURINTERVAL 5 HOURเพิ่ม 5 ชั่วโมง
MINUTEINTERVAL 30 MINUTEเพิ่ม 30 นาที
SECONDINTERVAL 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 ขึ้นกับการตั้งค่า)