การเตรียมข้อมูล
mysql> CREATE TABLE DemoTable1871 (ArrivalDate DATETIME);
mysql> INSERT INTO DemoTable1871 VALUES('2019-12-19 07:45:00');
mysql> INSERT INTO DemoTable1871 VALUES('2018-11-10 12:00:00');
mysql> INSERT INTO DemoTable1871 VALUES('2019-01-31'); -- Time จะเป็น 00:00:00
เพิ่ม 6 วัน ด้วย UPDATE
mysql> UPDATE DemoTable1871
SET ArrivalDate = DATE_ADD(ArrivalDate, INTERVAL 6 DAY);
Query OK, 3 rows affected
ผลลัพธ์
mysql> SELECT * FROM DemoTable1871;
+---------------------+
| ArrivalDate |
+---------------------+
| 2019-12-25 07:45:00 |
| 2018-11-16 12:00:00 |
| 2019-02-06 00:00:00 |
+---------------------+
DATE_ADD vs ADDDATE
ADDDATE เป็น Alias ของ DATE_ADD ใช้ได้เหมือนกัน:
DATE_ADD(date, INTERVAL 6 DAY)
ADDDATE(date, INTERVAL 6 DAY)
ADDDATE(date, 6) -- Short form: INTERVAL DAY เป็น Default
Interval Units ทั้งหมด
MICROSECOND, SECOND, MINUTE, HOUR
DAY, WEEK, MONTH, QUARTER, YEAR
SECOND_MICROSECOND, MINUTE_MICROSECOND, MINUTE_SECOND
HOUR_MICROSECOND, HOUR_SECOND, HOUR_MINUTE
DAY_MICROSECOND, DAY_SECOND, DAY_MINUTE, DAY_HOUR
YEAR_MONTH
ตัวอย่างเพิ่มเติม
-- เพิ่ม 1 เดือน (จัดการสิ้นเดือนอัตโนมัติ)
DATE_ADD('2019-01-31', INTERVAL 1 MONTH) -- 2019-02-28
-- เพิ่ม 1 ปี
DATE_ADD(NOW(), INTERVAL 1 YEAR)
-- ลบวัน (ใช้ DATE_SUB หรือ INTERVAL ลบ)
DATE_SUB(ArrivalDate, INTERVAL 3 DAY)
DATE_ADD(ArrivalDate, INTERVAL -3 DAY)
ข้อควรระวัง
- UPDATE ไม่มี WHERE = อัปเดตทั้งตาราง
- DATETIME เก็บ Year 1000-9999, TIMESTAMP เก็บ 1970-2038
- Timezone: DATETIME ไม่มี Timezone, TIMESTAMP แปลงเป็น UTC