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

เพิ่มวันในคอลัมน์ DATETIME ด้วย DATE_ADD ใน MySQL

การเตรียมข้อมูล

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