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

MySQL: เพิ่ม 11 วัน ให้กับวันที่ปัจจุบัน (CURDATE) ด้วย DATE_ADD

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

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)วันสุดท้ายของเดือนนั้น