สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable1994 ( ArrivalDate date );
mysql> insert into DemoTable1994 values('2019-12-18');
mysql> insert into DemoTable1994 values('2019-12-19');
mysql> insert into DemoTable1994 values('2019-12-20');
mysql> insert into DemoTable1994 values('2019-12-25');
mysql> insert into DemoTable1994 values('2018-12-20');
ข้อมูลในตาราง
+-------------+
| ArrivalDate |
+-------------+
| 2019-12-18 |
| 2019-12-19 |
| 2019-12-20 |
| 2019-12-25 |
| 2018-12-20 |
+-------------+
Query เพิ่ม 11 วัน ให้กับวันที่ = วันนี้
mysql> select ArrivalDate, date_add(ArrivalDate, interval 11 day) from DemoTable1994 where ArrivalDate = curdate();
ผลลัพธ์ (สมมติวันนี้คือ 2019-12-20)
+-------------+---------------------------------------+
| ArrivalDate | date_add(ArrivalDate, interval 11 day) |
+-------------+---------------------------------------+
| 2019-12-20 | 2019-12-31 |
+-------------+---------------------------------------+
อธิบาย
CURDATE() คืนคาวันที่ปัจจุบัน (ไม่มีเวลา)
DATE_ADD(date, INTERVAL 11 DAY) เพิ่ม 11 วัน
WHERE ArrivalDate = CURDATE() กรองเฉพาะแถวที่วันที่ตรงกับวันนี้
รูปแบบย่อ (Shorthand)
-- ทั้งคู่นี้เทียบเท่ากัน
DATE_ADD(ArrivalDate, INTERVAL 11 DAY)
ArrivalDate + INTERVAL 11 DAY
กรณีต้องการเพิ่ม 11 วัน ให้ทุกแถว (ไม่กรอง)
SELECT ArrivalDate, ArrivalDate + INTERVAL 11 DAY AS NewDate FROM DemoTable1994;
กรณีใช้กับ DATETIME / TIMESTAMP
SELECT NOW(), NOW() + INTERVAL 11 DAY;
-- ผลลัพธ์: 2019-12-20 14:30:00 | 2019-12-31 14:30:00
ฟังก์ชันวันที่อื่นที่น่าสนใจ
| ฟังก์ชัน | คำอธิบาย |
| DATE_SUB(date, INTERVAL n DAY) | ลบวัน |
| ADDDATE(date, n) | เพิ่มวัน (Synonym DATE_ADD) |
| SUBDATE(date, n) | ลบวัน (Synonym DATE_SUB) |
| DATEDIFF(date1, date2) | ความต่างวัน (date1 - date2) |
| LAST_DAY(date) | วันสุดท้ายของเดือนนั้น |